Skip to content

Commit

Permalink
RemoveScala3OptionalBraces: fewerBracesMin/MaxSpan
Browse files Browse the repository at this point in the history
  • Loading branch information
kitbellew committed Mar 28, 2024
1 parent 87c4dc7 commit 402432c
Show file tree
Hide file tree
Showing 8 changed files with 112 additions and 2 deletions.
7 changes: 7 additions & 0 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -3698,6 +3698,13 @@ The section contains the following settings (available since v3.8.1):
- other flags below might extend rewrites to other cases
- `oldSyntaxToo`
- if `true`, applies also to expressions using deprecated syntax
- `fewerBracesMinSpan` and `fewerBracesMaxSpan`
- will apply the rewrite to last curried single-argument group if
it is enclosed in curly braces (or would be rewritten to curly
braces by the `RedundantBraces` rule)
- will only apply the rewrite if the cumulative span of all visible
(non-whitespace) tokens within the argument is between the two values
- this rule is disabled if `fewerBracesMaxSpan == 0`

Prior to v3.8.1, `rewrite.scala3.removeOptionalBraces` was a flag which
took three possible values (with their equivalent current settings shown):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ object RewriteScala3Settings {

case class RemoveOptionalBraces(
enabled: Boolean = true,
fewerBracesMinSpan: Int = 2,
fewerBracesMaxSpan: Int = 0,
oldSyntaxToo: Boolean = false
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,11 @@ object ScalafmtConfig {
addIf(rewrite.insertBraces.minLines < rewrite.redundantBraces.maxBreaks)
addIf(align.beforeOpenParenDefnSite && !align.closeParenSite)
addIf(align.beforeOpenParenCallSite && !align.closeParenSite)
addIf(rewrite.scala3.removeOptionalBraces.fewerBracesMinSpan <= 0)
if (rewrite.scala3.removeOptionalBraces.fewerBracesMaxSpan != 0) {
addIf(rewrite.scala3.removeOptionalBraces.fewerBracesMaxSpan < 0)
addIf(rewrite.scala3.removeOptionalBraces.fewerBracesMinSpan > rewrite.scala3.removeOptionalBraces.fewerBracesMaxSpan)
}
}
// scalafmt: {}
if (allErrors.isEmpty) Configured.ok(cfg)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import scala.meta.tokens.Token
import org.scalafmt.config.ScalafmtConfig
import org.scalafmt.internal.FormatToken
import org.scalafmt.internal.FormatTokens
import org.scalafmt.util.TreeOps
import org.scalafmt.util.TreeOps._

object RemoveScala3OptionalBraces extends FormatTokensRewrite.RuleFactory {

Expand Down Expand Up @@ -105,7 +105,7 @@ private class RemoveScala3OptionalBraces(implicit val ftoks: FormatTokens)
case _: Token.KwIf => true
case _: Token.KwThen => true
case _: Token.KwElse =>
!TreeOps.isTreeMultiStatBlock(t.elsep) ||
!isTreeMultiStatBlock(t.elsep) ||
ftoks.tokenAfter(t.cond).right.is[Token.KwThen]
case _: Token.RightParen => allowOldSyntax
case _ => false
Expand Down
24 changes: 24 additions & 0 deletions scalafmt-tests/src/test/resources/scala3/FewerBraces.stat
Original file line number Diff line number Diff line change
Expand Up @@ -1805,6 +1805,8 @@ object a:
<<< rewrite to fewer braces: block simple
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 6
fewerBracesMaxSpan = 6
}
===
foo
Expand Down Expand Up @@ -1837,6 +1839,8 @@ foo
<<< rewrite to fewer braces: func
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1870,6 +1874,8 @@ foo
rewrite.rules = [RedundantBraces]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1911,6 +1917,8 @@ rewrite.trailingCommas.style = keep
rewrite.trailingCommas.allowFolding = true
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1952,6 +1960,8 @@ rewrite.trailingCommas.style = keep
rewrite.trailingCommas.allowFolding = false
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1991,6 +2001,8 @@ foo
rewrite.rules = [RedundantBraces]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
object a {
Expand Down Expand Up @@ -2029,6 +2041,8 @@ object a:
rewrite.rules = [RedundantBraces, RedundantParens]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -2068,6 +2082,8 @@ foo
rewrite.rules = [RedundantBraces, RedundantParens]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
object a {
Expand Down Expand Up @@ -2105,6 +2121,8 @@ object a:
<<< rewrite to fewer braces: partial func
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 20
fewerBracesMaxSpan = 20
}
===
foo
Expand Down Expand Up @@ -2138,6 +2156,8 @@ foo
rewrite.rules = [RedundantBraces]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 20
fewerBracesMaxSpan = 20
}
===
foo
Expand Down Expand Up @@ -2176,6 +2196,8 @@ foo
<<< rewrite to fewer braces: match
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 28
fewerBracesMaxSpan = 28
}
===
foo
Expand Down Expand Up @@ -2217,6 +2239,8 @@ foo
<<< rewrite to fewer braces: block complex
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 14
fewerBracesMaxSpan = 14
}
===
foo
Expand Down
24 changes: 24 additions & 0 deletions scalafmt-tests/src/test/resources/scala3/FewerBraces_fold.stat
Original file line number Diff line number Diff line change
Expand Up @@ -1580,6 +1580,8 @@ object a:
<<< rewrite to fewer braces: block simple
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 6
fewerBracesMaxSpan = 6
}
===
foo
Expand Down Expand Up @@ -1607,6 +1609,8 @@ foo.mtd1 { x + 1 }.mtd2 {
<<< rewrite to fewer braces: func
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1635,6 +1639,8 @@ foo.mtd1 { x => x + 1 }.mtd2 { x =>
rewrite.rules = [RedundantBraces]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1671,6 +1677,8 @@ rewrite.trailingCommas.style = always
rewrite.trailingCommas.allowFolding = true
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1707,6 +1715,8 @@ rewrite.trailingCommas.style = always
rewrite.trailingCommas.allowFolding = false
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1741,6 +1751,8 @@ foo.mtd1 { x => x + 1 }.mtd2 { x =>
rewrite.rules = [RedundantBraces]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
object a {
Expand Down Expand Up @@ -1775,6 +1787,8 @@ object a:
rewrite.rules = [RedundantBraces, RedundantParens]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1809,6 +1823,8 @@ foo.mtd1(x => x + 1).mtd2 { x =>
rewrite.rules = [RedundantBraces, RedundantParens]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
object a {
Expand Down Expand Up @@ -1842,6 +1858,8 @@ object a:
<<< rewrite to fewer braces: partial func
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 20
fewerBracesMaxSpan = 20
}
===
foo
Expand Down Expand Up @@ -1870,6 +1888,8 @@ foo.mtd1 { case x => x + 1 }.mtd2 {
rewrite.rules = [RedundantBraces]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 20
fewerBracesMaxSpan = 20
}
===
foo
Expand Down Expand Up @@ -1903,6 +1923,8 @@ foo.mtd1 { case x => x + 1 }.mtd2 {
<<< rewrite to fewer braces: match
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 28
fewerBracesMaxSpan = 28
}
===
foo
Expand Down Expand Up @@ -1941,6 +1963,8 @@ foo.mtd1 {
<<< rewrite to fewer braces: block complex
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 14
fewerBracesMaxSpan = 14
}
===
foo
Expand Down
24 changes: 24 additions & 0 deletions scalafmt-tests/src/test/resources/scala3/FewerBraces_keep.stat
Original file line number Diff line number Diff line change
Expand Up @@ -1773,6 +1773,8 @@ object a:
<<< rewrite to fewer braces: block simple
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 6
fewerBracesMaxSpan = 6
}
===
foo
Expand Down Expand Up @@ -1805,6 +1807,8 @@ foo
<<< rewrite to fewer braces: func
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1838,6 +1842,8 @@ foo
rewrite.rules = [RedundantBraces]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1882,6 +1888,8 @@ rewrite.trailingCommas.style = keep
rewrite.trailingCommas.allowFolding = true
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1926,6 +1934,8 @@ rewrite.trailingCommas.style = keep
rewrite.trailingCommas.allowFolding = false
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -1968,6 +1978,8 @@ foo
rewrite.rules = [RedundantBraces]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
object a {
Expand Down Expand Up @@ -2009,6 +2021,8 @@ object a:
rewrite.rules = [RedundantBraces, RedundantParens]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
foo
Expand Down Expand Up @@ -2048,6 +2062,8 @@ foo
rewrite.rules = [RedundantBraces, RedundantParens]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 9
fewerBracesMaxSpan = 9
}
===
object a {
Expand Down Expand Up @@ -2085,6 +2101,8 @@ object a:
<<< rewrite to fewer braces: partial func
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 20
fewerBracesMaxSpan = 20
}
===
foo
Expand Down Expand Up @@ -2118,6 +2136,8 @@ foo
rewrite.rules = [RedundantBraces]
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 20
fewerBracesMaxSpan = 20
}
===
foo
Expand Down Expand Up @@ -2156,6 +2176,8 @@ foo
<<< rewrite to fewer braces: match
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 28
fewerBracesMaxSpan = 28
}
===
foo
Expand Down Expand Up @@ -2197,6 +2219,8 @@ foo
<<< rewrite to fewer braces: block complex
rewrite.scala3.removeOptionalBraces = {
enabled = yes
fewerBracesMinSpan = 14
fewerBracesMaxSpan = 14
}
===
foo
Expand Down

0 comments on commit 402432c

Please sign in to comment.