Skip to content

Commit

Permalink
Newlines: define shortcuts for source kind
Browse files Browse the repository at this point in the history
  • Loading branch information
kitbellew committed Sep 12, 2024
1 parent a5e3ee1 commit b02ef82
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,7 @@ case class BinPack(

def keepParentConstructors(implicit style: ScalafmtConfig): Boolean =
parentConstructors.eq(BinPack.ParentCtors.keep) ||
style.newlines.source.eq(Newlines.keep) &&
parentConstructors.eq(BinPack.ParentCtors.source)
style.newlines.keep && parentConstructors.eq(BinPack.ParentCtors.source)

@inline
def callSiteFor(open: Token): BinPack.Site =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -239,8 +239,13 @@ case class Newlines(
}

@inline
def keepBreak(hasBreak: => Boolean): Boolean = source.eq(Newlines.keep) &&
hasBreak
def fold: Boolean = source eq Newlines.fold
@inline
def unfold: Boolean = source eq Newlines.unfold
@inline
def keep: Boolean = source eq Newlines.keep
@inline
def keepBreak(hasBreak: => Boolean): Boolean = keep && hasBreak
@inline
def keepBreak(newlines: Int): Boolean =
keepBreak(!FormatToken.noBreak(newlines))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -981,7 +981,7 @@ class FormatOps(
Left(SplitTag.OnelineWithChain)
case BinPack.ParentCtors.Always | BinPack.ParentCtors.Never =>
Right(false)
case _ => Right(style.newlines.source eq Newlines.fold)
case _ => Right(style.newlines.fold)
}
val exclude = style.binPack.parentConstructors match {
case BinPack.ParentCtors.Always
Expand Down Expand Up @@ -2268,7 +2268,7 @@ class FormatOps(
case t: Term.If => (getTreeSingleExpr(t.elsep) match {
case Some(x: Term.If) =>
val forceNL = isJustBeforeTree(nft)(x) && ft.hasBreak &&
((ft ne nft) || (style.newlines.source eq Newlines.keep))
((ft ne nft) || style.newlines.keep)
if (forceNL) Some(true) else None
case Some(_) if !getLastNotTrailingCommentOpt(t).exists(_.isLeft) =>
if (!isThenPWithOptionalBraces(t)) None
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -373,8 +373,7 @@ class Router(formatOps: FormatOps) {
val sldPolicy = getSingleLinePolicy
val expire = leftOwner match {
case _: Term.ForYield
if !sld && sldPolicy.isEmpty &&
(style.newlines.source eq Newlines.fold) =>
if !sld && sldPolicy.isEmpty && style.newlines.fold =>
getLastToken(leftOwner)
case _ => endOfSingleLineBlock(closeFT)
}
Expand All @@ -393,7 +392,7 @@ class Router(formatOps: FormatOps) {
if (isBeforeOpenParen) closeFT.left else rhsOptimalToken(closeFT),
noSyntaxNL = true,
killOnFail = true,
noOptimal = style.newlines.source eq Newlines.keep,
noOptimal = style.newlines.keep,
).andPolicy(sldPolicy & noCloseSpacePolicy)
} else Split(xmlSpace(leftOwner), 0)
.withSingleLine(expire, noSyntaxNL = true, killOnFail = true)
Expand Down Expand Up @@ -428,7 +427,7 @@ class Router(formatOps: FormatOps) {
case Term.Block((_: Term.FunctionTerm) :: Nil)
if !nextNonComment(ft).right.is[T.LeftBrace] => spaceSplitBase
case _ if afterCurlySpace && {
style.newlines.source.eq(Newlines.fold) || !rightOwner.is[Defn]
style.newlines.fold || !rightOwner.is[Defn]
} =>
val exp = getOptimalTokenFor(getLastNonTrivial(leftFunc.body).left)
spaceSplitBase.withSingleLineNoOptimal(exp, noSyntaxNL = true)
Expand Down Expand Up @@ -545,8 +544,7 @@ class Router(formatOps: FormatOps) {
Seq(baseSplit, nlSplit(nft)(1))
else Seq(nlSplit(nft)(0))
else if (beforeMultiline eq Newlines.unfold)
if (style.newlines.source ne Newlines.unfold) withSlbSplit
else Seq(nlSplit(nft)(0))
if (style.newlines.unfold) Seq(nlSplit(nft)(0)) else withSlbSplit
else if (
condIsDefined || beforeMultiline.eq(Newlines.classic) ||
getSingleStatExceptEndMarker(body).isEmpty
Expand Down Expand Up @@ -986,10 +984,10 @@ class Router(formatOps: FormatOps) {
} else if (
multipleArgs ||
(!isSingleEnclosedArgument || leftOwnerIsEnclosed) &&
style.newlines.source.eq(Newlines.unfold)
style.newlines.unfold
) TokenRanges.empty
else if (
style.newlines.source.eq(Newlines.fold) && {
style.newlines.fold && {
isSingleEnclosedArgument ||
singleArgument && isExcludedTree(onlyArgument)
}
Expand Down Expand Up @@ -1056,7 +1054,7 @@ class Router(formatOps: FormatOps) {
)
else if (splitsForAssign.isDefined) singleLine(3)
else singleLine(10)
val noOptimal = style.newlines.source eq Newlines.keep
val noOptimal = style.newlines.keep
val okIndent = rightIsComment || handleImplicit
Split(noSplitMod, 0, policy = noSplitPolicy)
.withOptimalToken(optimal, ignore = noOptimal)
Expand Down Expand Up @@ -1440,7 +1438,7 @@ class Router(formatOps: FormatOps) {
val isBeforeOpenParen = style.newlines.isBeforeOpenParenCallSite
val optimal: T =
if (isBeforeOpenParen) rbft.left else rhsOptimalToken(rbft)
val noOptimal = style.newlines.source eq Newlines.keep
val noOptimal = style.newlines.keep
Split(NoSplit, 0).withSingleLine(optimal, noOptimal = noOptimal)
}
Seq(slbParensSplit.getOrElse(Split.ignored), Split(Space, 0))
Expand Down Expand Up @@ -1538,7 +1536,7 @@ class Router(formatOps: FormatOps) {
)
case _: Defn.RepeatedEnumCase if {
if (!style.newlines.sourceIgnored) hasBreak()
else style.newlines.source eq Newlines.unfold
else style.newlines.unfold
} => Seq(Split(Newline, 0))
case _: ImportExportStat => Seq(
Split(Space, 0),
Expand Down Expand Up @@ -1605,8 +1603,8 @@ class Router(formatOps: FormatOps) {
Seq(Split(mod, 0))

case FormatToken(_, _: T.Dot, _)
if style.newlines.source.ne(Newlines.keep) &&
rightOwner.is[Term.Select] && findTreeWithParent(rightOwner) {
if !style.newlines.keep && rightOwner.is[Term.Select] &&
findTreeWithParent(rightOwner) {
case _: Term.ArgClause => None
case _: Type.Select | _: Importer | _: Pkg => Some(true)
case _: Term.Select | _: Member.Apply => None
Expand Down Expand Up @@ -1943,7 +1941,7 @@ class Router(formatOps: FormatOps) {
case FormatToken(_: T.KwIf, right, _) if leftOwner.is[Term.If] =>
val owner = leftOwner.asInstanceOf[Term.If]
val expire = getLastToken(owner)
val isKeep = style.newlines.source eq Newlines.keep
val isKeep = style.newlines.keep
val mod =
if (isKeep && hasBreak()) Newline
else Space(style.spaces.isSpaceAfterKeyword(right))
Expand Down Expand Up @@ -2109,7 +2107,7 @@ class Router(formatOps: FormatOps) {
Seq(if (hasBreak()) newlineSplit(0, isConfig) else spaceSplit)
case _ =>
val singleLine = enclosed.forall { x =>
style.newlines.source.eq(Newlines.unfold) && x.parent.exists {
style.newlines.unfold && x.parent.exists {
case _: Template | _: Defn | _: Member.Infix => false
case _ => true
}
Expand Down Expand Up @@ -2341,8 +2339,7 @@ class Router(formatOps: FormatOps) {

// Pattern alternatives
case FormatToken(T.Ident("|"), _, _) if leftOwner.is[Pat.Alternative] =>
if (style.newlines.source eq Newlines.keep)
Seq(Split(Space.orNL(noBreak()), 0))
if (style.newlines.keep) Seq(Split(Space.orNL(noBreak()), 0))
else Seq(Split(Space, 0), Split(Newline, 1))
case FormatToken(_, T.Ident("|"), _) if rightOwner.is[Pat.Alternative] =>
val noNL = !style.newlines.keepBreak(newlines)
Expand Down

0 comments on commit b02ef82

Please sign in to comment.