From 5b11cf66ba257983b6869159997f14798290d483 Mon Sep 17 00:00:00 2001 From: Albert Meltzer <7529386+kitbellew@users.noreply.github.com> Date: Thu, 6 Jul 2023 09:34:24 -0700 Subject: [PATCH] FormatOps: use getLastTokenOpt, add getHeadToken --- .../main/scala/org/scalafmt/internal/FormatOps.scala | 12 +++++++----- .../main/scala/org/scalafmt/internal/Router.scala | 2 +- 2 files changed, 8 insertions(+), 6 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 618ae75851..f7aed9eef4 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 @@ -1148,7 +1148,7 @@ class FormatOps( ) { forces += hash(open) args.foreach { arg => - clearQueues += hash(tokens.getHead(arg).left) + clearQueues += hash(getHeadToken(arg)) } } tokens.foreach { @@ -1520,8 +1520,7 @@ class FormatOps( !cannotStartSelectChainOnExpr(thisSelectLike.qual) def checkParent = thisTree.parent match { case `nextSelect` => style.includeNoParensInSelectChains - case Some(p: Term.Apply) - if tokens.getHead(p.argClause).left.is[T.LeftBrace] => + case Some(p: Term.Apply) if getHeadToken(p.argClause).is[T.LeftBrace] => style.includeCurlyBraceInSelectChains && !nextSelect.contains(lastApply) // exclude short curly case Some(p: Member.Apply) => p.fun eq thisTree @@ -2512,7 +2511,7 @@ class FormatOps( @tailrec private def isElsePWithOptionalBraces(tree: Term.If): Boolean = { val elsep = tree.elsep - !tokens.getHead(elsep).left.is[T.LeftBrace] && (elsep match { + !getHeadToken(elsep).is[T.LeftBrace] && (elsep match { case t: Term.If => isThenPWithOptionalBraces(t) || !ifWithoutElse(t) && isElsePWithOptionalBraces(t) @@ -2545,7 +2544,7 @@ class FormatOps( } @inline private def treeLast(tree: Tree): Option[T] = - tokens.getLastOpt(tree).map(_.left) + getLastTokenOpt(tree) @inline private def blockLast(tree: Tree): Option[T] = if (isTreeMultiStatBlock(tree)) treeLast(tree) else None @inline private def blockLast(tree: Term.Block): Option[T] = @@ -2753,6 +2752,9 @@ class FormatOps( case _ => other } + def getHeadToken(tree: Tree): T = + tokens.getHead(tree).left + def getLastToken(tree: Tree): T = tokens.getLast(tree).left 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 b54c922327..fe0fc8b839 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 @@ -759,7 +759,7 @@ class Router(formatOps: FormatOps) { ) } val argsOpt = if (isAlignFirstParen) lastSyntaxClause else None - argsOpt.flatMap(tokens.getLastOpt).map(_.left).fold(splits) { x => + argsOpt.flatMap(getLastTokenOpt).fold(splits) { x => val noSplitIndents = Seq( Indent(StateColumn, x, ExpiresOn.Before), Indent(-indentLen, x, ExpiresOn.Before)