Skip to content

Commit

Permalink
FormatOps: get ClauseSiteFlags fields implicitly
Browse files Browse the repository at this point in the history
  • Loading branch information
kitbellew committed Sep 12, 2024
1 parent eeff171 commit c8fb00e
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -850,20 +850,18 @@ class FormatOps(
cfg: Newlines.ConfigStyleElement,
): Boolean = cfg.getForceIfOptimized && forceConfigStyle(ft.meta.idx)

def preserveConfigStyle(ft: FormatToken, breakBeforeClose: => Boolean)(
implicit
style: ScalafmtConfig,
clauseSiteFlags: ClauseSiteFlags,
): Boolean = clauseSiteFlags.configStyle.prefer &&
couldPreserveConfigStyle(ft, breakBeforeClose)
def preserveConfigStyle(
ft: FormatToken,
breakBeforeClose: => Boolean,
)(implicit style: ScalafmtConfig, clauseSiteFlags: ClauseSiteFlags): Boolean =
preferConfigStyle && couldPreserveConfigStyle(ft, breakBeforeClose)

def couldPreserveConfigStyle(ft: FormatToken, breakBeforeClose: => Boolean)(
implicit
style: ScalafmtConfig,
clauseSiteFlags: ClauseSiteFlags,
): Boolean = !style.newlines.sourceIgnored && {
!clauseSiteFlags.dangleCloseDelim && !clauseSiteFlags.alignOpenDelim ||
ft.hasBreak ||
!dangleCloseDelim && !alignOpenDelim || ft.hasBreak ||
(next(ft).hasBreak || style.newlines.forceAfterImplicitParamListModifier) &&
opensConfigStyleImplicitParamList(ft)
} && breakBeforeClose
Expand Down Expand Up @@ -2670,7 +2668,7 @@ class FormatOps(
)(implicit style: ScalafmtConfig, clauseSiteFlags: ClauseSiteFlags) = {
implicit val configStyle = clauseSiteFlags.configStyle
val configStylePrefer = configStyle.prefer
val shouldDangle = clauseSiteFlags.dangleCloseDelim
val shouldDangle = dangleCloseDelim
val sourceIgnored = style.newlines.sourceIgnored
val configStyleSource = configStylePrefer && !sourceIgnored
val dangleForTrailingCommas = getMustDangleForTrailingCommas(ftBeforeClose)
Expand Down Expand Up @@ -2945,6 +2943,15 @@ object FormatOps {
)
}

def preferConfigStyle(implicit clauseSiteFlags: ClauseSiteFlags): Boolean =
clauseSiteFlags.configStyle.prefer

def dangleCloseDelim(implicit clauseSiteFlags: ClauseSiteFlags): Boolean =
clauseSiteFlags.dangleCloseDelim

def alignOpenDelim(implicit clauseSiteFlags: ClauseSiteFlags): Boolean =
clauseSiteFlags.alignOpenDelim

class ExtractFromMeta[A](f: FormatToken.Meta => Option[A]) {
def unapply(meta: FormatToken.Meta): Option[A] = f(meta)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -922,8 +922,7 @@ class Router(formatOps: FormatOps) {
else defnSiteLastToken(afterClose, leftOwner)

val wouldDangle = onlyConfigStyle || mustDangleForTrailingCommas ||
clauseSiteFlags.dangleCloseDelim ||
closeBreak && beforeClose.left.is[T.Comment]
dangleCloseDelim || closeBreak && beforeClose.left.is[T.Comment]
val optimalIsComment = optimal.is[T.Comment]

val newlinePolicy: Policy = Policy ?
Expand All @@ -946,7 +945,7 @@ class Router(formatOps: FormatOps) {

val rightIsComment = right.is[T.Comment]

val align = !rightIsComment && clauseSiteFlags.alignOpenDelim &&
val align = !rightIsComment && alignOpenDelim &&
(!handleImplicit || style.newlines.forceAfterImplicitParamListModifier)
val alignTuple = align && tupleSite && !onlyConfigStyle

Expand Down Expand Up @@ -1178,7 +1177,7 @@ class Router(formatOps: FormatOps) {
if (nlCloseOnOpen eq NlClosedOnOpen.Cfg) indentLen else bpIndentLen

def noSplitIndents =
if (clauseSiteFlags.alignOpenDelim) getOpenParenAlignIndents(close)
if (alignOpenDelim) getOpenParenAlignIndents(close)
else Seq(Indent(bpIndentLen, close, Before))

Seq(
Expand Down Expand Up @@ -1260,8 +1259,7 @@ class Router(formatOps: FormatOps) {
}
val trigger = leftOwner.parent.flatMap(iter)
Seq(trigger.fold(indent)(x => Indent.before(indent, x)))
} else if (clauseSiteFlags.alignOpenDelim)
getOpenParenAlignIndents(close)
} else if (alignOpenDelim) getOpenParenAlignIndents(close)
else Seq(indent)

val nextComma =
Expand Down Expand Up @@ -1301,7 +1299,7 @@ class Router(formatOps: FormatOps) {
)
val res =
if (nlClosedOnOpenOk) nlCloseOnOpen
else if (clauseSiteFlags.configStyle.prefer) NlClosedOnOpen.Cfg
else if (preferConfigStyle) NlClosedOnOpen.Cfg
else NlClosedOnOpen.Yes
res match {
case NlClosedOnOpen.Cfg if styleMap.forcedBinPack(leftOwner) =>
Expand Down Expand Up @@ -2099,7 +2097,7 @@ class Router(formatOps: FormatOps) {
def newlineSplit(cost: Int, forceDangle: Boolean)(implicit
fileLine: FileLine,
) = {
val shouldDangle = forceDangle || clauseSiteFlags.dangleCloseDelim
val shouldDangle = forceDangle || dangleCloseDelim
Split(Newline, cost)
.withPolicy(decideNewlinesOnlyBeforeClose(close), !shouldDangle)
.withIndent(style.indent.callSite, close, Before)
Expand Down

0 comments on commit c8fb00e

Please sign in to comment.