From d33076b679be42c702330c09b5e9ddc961211946 Mon Sep 17 00:00:00 2001 From: Albert Meltzer <7529386+kitbellew@users.noreply.github.com> Date: Tue, 24 Sep 2024 19:52:43 -0700 Subject: [PATCH] FormatOps: generic getBinPackSiteFlags overload --- .../org/scalafmt/internal/FormatOps.scala | 34 +++++++++++++++++-- .../scala/org/scalafmt/internal/Router.scala | 3 +- 2 files changed, 32 insertions(+), 5 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 f259f3cdaa..552eb1342d 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 @@ -2727,19 +2727,45 @@ class FormatOps( beforeClose.exists(rightIsCloseDelimToAddTrailingComma(_, closeFt)) } + def getBinpackDefnSiteFlags( + ftAfterOpen: => FormatToken, + ftBeforeClose: FormatToken, + )(implicit + style: ScalafmtConfig, + clauseSiteFlags: ClauseSiteFlags, + ): BinpackSiteFlags = + getBinpackSiteFlags(ftAfterOpen, ftBeforeClose, literalArgList = false) + def getBinpackCallSiteFlags( ftAfterOpen: FormatToken, ftBeforeClose: FormatToken, - )(implicit style: ScalafmtConfig, clauseSiteFlags: ClauseSiteFlags) = { + )(implicit + style: ScalafmtConfig, + clauseSiteFlags: ClauseSiteFlags, + ): BinpackSiteFlags = { val literalArgList = styleMap.opensLiteralArgumentList(ftAfterOpen) getBinpackSiteFlags(ftAfterOpen, ftBeforeClose, literalArgList) } def getBinpackSiteFlags( + defnSite: Boolean, ftAfterOpen: FormatToken, ftBeforeClose: FormatToken, + )(implicit + style: ScalafmtConfig, + clauseSiteFlags: ClauseSiteFlags, + ): BinpackSiteFlags = + if (defnSite) getBinpackDefnSiteFlags(ftAfterOpen, ftBeforeClose) + else getBinpackCallSiteFlags(ftAfterOpen, ftBeforeClose) + + def getBinpackSiteFlags( + getFtAfterOpen: => FormatToken, + ftBeforeClose: FormatToken, literalArgList: Boolean, - )(implicit style: ScalafmtConfig, clauseSiteFlags: ClauseSiteFlags) = { + )(implicit + style: ScalafmtConfig, + clauseSiteFlags: ClauseSiteFlags, + ): BinpackSiteFlags = { implicit val configStyle = clauseSiteFlags.configStyle val configStylePrefer = configStyle.prefer val shouldDangle = dangleCloseDelim @@ -2763,7 +2789,8 @@ class FormatOps( } } - def nlOpenClose(): (Boolean, NlClosedOnOpen) = + def nlOpenClose(): (Boolean, NlClosedOnOpen) = { + val ftAfterOpen = getFtAfterOpen if (!literalArgList && mustForceConfigStyle(ftAfterOpen)) (true, NlClosedOnOpen.Cfg) else { @@ -2791,6 +2818,7 @@ class FormatOps( (nlBothIncludingCfg || nlOpenExcludingCfg, dangle) } } + } BinpackSiteFlags( literalArgList = literalArgList, 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 3c46291797..edc45081af 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 @@ -1112,8 +1112,7 @@ class Router(formatOps: FormatOps) { if (noNeed) None else findFirstOnRight[T.Comma](getLast(x), close) } - val flags = - getBinpackSiteFlags(ft, prev(afterClose), literalArgList = false) + val flags = getBinpackDefnSiteFlags(ft, prev(afterClose)) val (nlOnly, nlCloseOnOpen) = flags.nlOpenClose() val noNLPolicy = flags.noNLPolicy val slbOrNL = nlOnly || noNLPolicy == null