From c5ecf30aea4e89aeac142a077508c3e3b965d0c2 Mon Sep 17 00:00:00 2001 From: Albert Meltzer <7529386+kitbellew@users.noreply.github.com> Date: Tue, 3 Sep 2024 09:52:59 -0700 Subject: [PATCH] Router: keep `then` NL cost at 1 even if no space --- .../main/scala/org/scalafmt/internal/Router.scala | 6 +++--- .../test/resources/scala3/OptionalBraces_keep.stat | 13 ++++++------- 2 files changed, 9 insertions(+), 10 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 d5f8ccf27b..81a195c542 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 @@ -2008,12 +2008,12 @@ class Router(formatOps: FormatOps) { Split(Newline, 1), ) case FormatToken(_, _: T.KwThen | _: T.KwDo, _) => - if (style.newlines.sourceIgnored || noBreak()) Seq( - Split(Space, 0) + val okSpace = style.newlines.sourceIgnored || noBreak() + Seq( + Split(!okSpace, 0)(Space) .withOptimalToken(nextNonCommentSameLineAfter(ft).left), Split(Newline, 1), ) - else Seq(Split(Newline, 0)) // Last else branch case FormatToken(_: T.KwElse, _, _) if (leftOwner match { case t: Term.If => t.elsep match { diff --git a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_keep.stat b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_keep.stat index 531741f585..c236d38a7e 100644 --- a/scalafmt-tests/src/test/resources/scala3/OptionalBraces_keep.stat +++ b/scalafmt-tests/src/test/resources/scala3/OptionalBraces_keep.stat @@ -106,13 +106,12 @@ object a: // c1 } >>> -Idempotency violated -=> Diff (- obtained, + expected) - if reducePattern(caseBindingMap, scrutineeSym.termRef, cdef.pat)(using -- gadtCtx -- ) -+ gadtCtx) - then { +object a: + if reducePattern(caseBindingMap, scrutineeSym.termRef, cdef.pat)(using + gadtCtx) + then { + // c1 + } <<< if(cond) indentation trait A: val cond =