From a2bfb510d688342c1e9883e86acb34eb46782a99 Mon Sep 17 00:00:00 2001 From: Albert Meltzer <7529386+kitbellew@users.noreply.github.com> Date: Thu, 21 Nov 2024 14:51:14 -0800 Subject: [PATCH] TreeOps: a braceless `match` is like fewer-braces --- .../org/scalafmt/internal/FormatOps.scala | 2 +- .../scalafmt/internal/TreeSyntacticGroup.scala | 2 +- .../main/scala/org/scalafmt/util/TreeOps.scala | 1 + .../resources/rewrite/RedundantParens.stat | 18 ++++++++++++------ 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/FormatOps.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/FormatOps.scala index 5fb35de125..7f58c01752 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/FormatOps.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/FormatOps.scala @@ -401,7 +401,7 @@ class FormatOps( val mod = if (ft.noBreak || !okToBreak) spaceMod else Newline2x(isFullInfixEnclosed && ft.hasBlankLine) - val split = Split(mod, 0) + def split(implicit fl: FileLine) = Split(mod, 0) if (isBeforeOp && isFewerBracesRhs(app.arg)) Seq(split) else Seq(InfixSplits.withNLIndent(split, app, fullInfix)) } diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/TreeSyntacticGroup.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/TreeSyntacticGroup.scala index 08db380cf6..5370d5e47a 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/TreeSyntacticGroup.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/TreeSyntacticGroup.scala @@ -19,6 +19,7 @@ object TreeSyntacticGroup { case _: Term.Xml => g.Term.SimpleExpr1 case _: Term.Apply => g.Term.SimpleExpr1 case _: Term.ApplyType => g.Term.SimpleExpr1 + case _: Term.SelectMatch => g.Term.SimpleExpr1 case t: Term.ApplyInfix => g.Term.InfixExpr(t.op.value) case t: Term.ApplyUnary => g.Term.PrefixExpr(t.op.value) case _: Term.Assign => g.Term.Expr1 @@ -34,7 +35,6 @@ object TreeSyntacticGroup { case _: Term.TryClause => g.Term.Expr1 case _: Term.FunctionTerm => g.Term.Expr case _: Term.PolyFunction => g.Term.Expr - case _: Term.SelectMatch => g.Term.SimpleExpr case _: Term.PartialFunction => g.Term.SimpleExpr case _: Term.While => g.Term.Expr1 case _: Term.Do => g.Term.Expr1 diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/util/TreeOps.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/util/TreeOps.scala index 424dd3a310..55d51d9084 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/util/TreeOps.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/util/TreeOps.scala @@ -888,6 +888,7 @@ object TreeOps { case t: Term.ApplyInfix => isFewerBracesLhs(t.argClause) case _ => false } + case t: Tree.WithCasesBlock => !ftoks.isEnclosedInMatching(t.casesBlock) case _ => false }) diff --git a/scalafmt-tests/shared/src/test/resources/rewrite/RedundantParens.stat b/scalafmt-tests/shared/src/test/resources/rewrite/RedundantParens.stat index ec0f3af349..289ed95697 100644 --- a/scalafmt-tests/shared/src/test/resources/rewrite/RedundantParens.stat +++ b/scalafmt-tests/shared/src/test/resources/rewrite/RedundantParens.stat @@ -554,12 +554,18 @@ object a { ) } >>> -Idempotency violated -=> Diff (- obtained, + expected) - case false => false -- + e -+ + e - val b = c + (d match +object a { + val b = c + d.match + case true => true + case false => false + val b = c + d.match + case true => true + case false => false + + e + val b = c + (d match + case true => true + case false => false) +} <<< #2194 6 match with parens, dot and no braces, !infixSide runner.dialect = scala3 rewrite.redundantParens.infixSide = null