From 4022f2f35545da0978fab20ced49f772e5674edc Mon Sep 17 00:00:00 2001 From: Albert Meltzer <7529386+kitbellew@users.noreply.github.com> Date: Tue, 17 Sep 2024 00:19:07 -0700 Subject: [PATCH] BestFirstSearch: fix bug, possible infinite loop --- .../main/scala/org/scalafmt/internal/BestFirstSearch.scala | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/BestFirstSearch.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/BestFirstSearch.scala index 487af4a8a4..eb2d0fa969 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/BestFirstSearch.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/internal/BestFirstSearch.scala @@ -280,15 +280,16 @@ private class BestFirstSearch private (range: Set[Range])(implicit case Seq(split) if !split.isNL => style.runner.event(FormatEvent.Enqueue(split)) val nextState = state.next(split, nextAllAltAreNL = false) - if (nextState.split.cost > 0 || nextState.depth >= tokens.length) state + if (nextState.split.cost > 0) state + else if (nextState.depth >= tokens.length) nextState else { val nextToken = tokens(nextState.depth) if (RightParenOrBracket(nextToken.right)) { implicit val style: ScalafmtConfig = styleMap.at(nextToken) trackState(nextState, depth, 0) - val nextSplits = getActiveSplits(nextToken, state, maxCost = 0) + val nextSplits = getActiveSplits(nextToken, nextState, maxCost = 0) traverseSameLineZeroCost(nextSplits, nextState, depth) - } else state + } else nextState } case _ => state }