From f1f53ed4afe6a5fb9d6c1cd389851c3b63e30e8e Mon Sep 17 00:00:00 2001 From: Albert Meltzer <7529386+kitbellew@users.noreply.github.com> Date: Wed, 9 Oct 2024 08:11:56 -0700 Subject: [PATCH] Router: move up check for no NL after `<-` enums It might have been overridden by `newlines.forceBeforeAssign` param. --- .../scala/org/scalafmt/internal/Router.scala | 19 +++++++++++-------- .../test/resources/scala3/OptionalBraces.stat | 9 ++++----- .../resources/scala3/OptionalBraces_fold.stat | 9 +++------ .../resources/scala3/OptionalBraces_keep.stat | 9 ++++----- .../scala3/OptionalBraces_unfold.stat | 9 +++------ 5 files changed, 25 insertions(+), 30 deletions(-) diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/Router.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/Router.scala index 71b7d75f4..747f08b4c 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/Router.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/Router.scala @@ -2615,6 +2615,16 @@ class Router(formatOps: FormatOps) { else if (isRightCommentWithBreak(ft)) Seq(CtrlBodySplits.withIndent(Split(Space.orNL(ft), 0), body, endFt)) else if (isJsNative(body)) Seq(Split(Space, 0).withSingleLine(endFt.left)) + else if ( + style.dialect.allowSignificantIndentation && + (style.newlines.sourceIgnored || ft.noBreak) && body.parent.exists { + case p: Enumerator.Assign => (p.body eq body) && p.parent.exists { + case pp: Term.EnumeratorsBlock => isEnclosedInParens(pp) + case _ => false + } + case _ => false + } + ) Seq(Split(Space, 0).withIndents(spaceIndents)) else if (style.newlines.forceBeforeAssign(ft.meta.leftOwner)) Seq(CtrlBodySplits.withIndent(Split(Newline2x(ft), 0), body, endFt)) else if (style.newlines.shouldForceBeforeMultilineAssign(ft.meta.leftOwner)) @@ -2717,7 +2727,7 @@ class Router(formatOps: FormatOps) { if (!style.align.arrowEnumeratorGenerator) Seq.empty else Seq(Indent(StateColumn, expire, After)) getSplitsDefValEquals(body, endFt, spaceIndents) { - def splits = CtrlBodySplits.get(body, spaceIndents) { + CtrlBodySplits.get(body, spaceIndents) { if (spaceIndents.nonEmpty) Split(Space, 0).withIndents(spaceIndents) else { val noSlb = body match { @@ -2729,13 +2739,6 @@ class Router(formatOps: FormatOps) { else Split(Space, 0).withSingleLine(expire) } }(cost => CtrlBodySplits.withIndent(Split(Newline2x(ft), cost), endFt)) - body.parent.parent match { - case Some(pp: Term.EnumeratorsBlock) - if style.dialect.allowSignificantIndentation && - isEnclosedInParens(pp) => - Seq(Split(Space, 0).withIndents(spaceIndents)) - case _ => splits - } } } diff --git a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces.stat b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces.stat index 01bec11e6..ae95e6b64 100644 --- a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces.stat +++ b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces.stat @@ -7355,7 +7355,8 @@ object a: for ( x <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; y <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; - z <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu + z <- + loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu ) yield x + y <<< #4219 forceBeforeAssign newlines.forceBeforeAssign = any @@ -7371,10 +7372,8 @@ object a: object a: val expression = for ( - x <- - loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; - y <- - loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; + x <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; + y <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; z <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu ) yield x + y diff --git a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_fold.stat b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_fold.stat index d187e7d54..6b30a83d0 100644 --- a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_fold.stat +++ b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_fold.stat @@ -7091,10 +7091,7 @@ object a: object a: val expression = for ( - x <- - loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; - y <- - loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; - z <- - loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu + x <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; + y <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; + z <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu ) yield x + y diff --git a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_keep.stat b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_keep.stat index 96187b39b..796933f4b 100644 --- a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_keep.stat +++ b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_keep.stat @@ -7384,7 +7384,8 @@ object a: val expression = for ( x <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; y <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; - z <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu + z <- + loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu ) yield x + y <<< #4219 forceBeforeAssign newlines.forceBeforeAssign = any @@ -7400,10 +7401,8 @@ object a: object a: val expression = for ( - x <- - loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; - y <- - loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; + x <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; + y <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; z <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu ) yield x + y diff --git a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_unfold.stat b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_unfold.stat index be9a73550..879cd32a0 100644 --- a/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_unfold.stat +++ b/scalafmt-tests/shared/src/test/resources/scala3/OptionalBraces_unfold.stat @@ -7665,11 +7665,8 @@ object a: object a: val expression = for ( - x <- - loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; - y <- - loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; - z <- - loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu + x <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; + y <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu; + z <- loremipsumdolorsitametconsecteturadipiscingelitseddoeiusmodtemporincididu ) yield x + y