From 4cd3d62bc54f9ebfd5a72cc69a07c4ee8e9ede3a Mon Sep 17 00:00:00 2001 From: Albert Meltzer <7529386+kitbellew@users.noreply.github.com> Date: Sat, 23 Nov 2024 07:05:35 -0800 Subject: [PATCH] PolicyOps: use Policy.Delay for decideNewlineXxx --- .../scala/org/scalafmt/util/PolicyOps.scala | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/scalafmt-core/shared/src/main/scala/org/scalafmt/util/PolicyOps.scala b/scalafmt-core/shared/src/main/scala/org/scalafmt/util/PolicyOps.scala index f823274517..51c308d5b4 100644 --- a/scalafmt-core/shared/src/main/scala/org/scalafmt/util/PolicyOps.scala +++ b/scalafmt-core/shared/src/main/scala/org/scalafmt/util/PolicyOps.scala @@ -98,11 +98,11 @@ object PolicyOps { ) } - final class DecideNewlinesOnlyBeforeToken( + final class DecideNewlinesOnlyBeforeToken private ( val token: FT, split: Option[Split], - val rank: Int = 0, - ifAny: Boolean = false, + val rank: Int, + ifAny: Boolean, )(implicit fileLine: FileLine) extends Policy.Clause { override val endPolicy: Policy.End.WithPos = Policy.End <= token @@ -124,11 +124,21 @@ object PolicyOps { } } - final class DecideNewlinesOnlyAfterToken( + object DecideNewlinesOnlyBeforeToken { + def apply( + token: FT, + split: Option[Split], + rank: Int = 0, + ifAny: Boolean = false, + )(implicit fileLine: FileLine): Policy = Policy.End < token ==> + new DecideNewlinesOnlyBeforeToken(token, split, rank, ifAny) + } + + final class DecideNewlinesOnlyAfterToken private ( val token: FT, split: Option[Split], - val rank: Int = 0, - ifAny: Boolean = false, + val rank: Int, + ifAny: Boolean, )(implicit fileLine: FileLine) extends Policy.Clause { override val endPolicy: Policy.End.WithPos = Policy.End >= token @@ -149,6 +159,16 @@ object PolicyOps { } } + object DecideNewlinesOnlyAfterToken { + def apply( + token: FT, + split: Option[Split], + rank: Int = 0, + ifAny: Boolean = false, + )(implicit fileLine: FileLine): Policy = Policy.End <= token ==> + new DecideNewlinesOnlyAfterToken(token, split, rank, ifAny) + } + def policyWithExclude( exclude: TokenRanges, endLt: FT => Policy.End.WithPos, @@ -185,7 +205,7 @@ object PolicyOps { def decideNewlinesOnlyBeforeClose(split: Split, rank: Int = 0)(close: FT)( implicit fileLine: FileLine, - ): Policy = new DecideNewlinesOnlyBeforeToken(close, Option(split), rank) + ): Policy = DecideNewlinesOnlyBeforeToken(close, Option(split), rank) def decideNewlinesOnlyBeforeCloseOnBreak(close: FT)(implicit fileLine: FileLine, @@ -202,7 +222,7 @@ object PolicyOps { def decideNewlinesOnlyBeforeToken(rank: Int, ifAny: Boolean = false)( token: FT, )(implicit fileLine: FileLine): Policy = - new DecideNewlinesOnlyBeforeToken(token, None, rank = rank, ifAny = ifAny) + DecideNewlinesOnlyBeforeToken(token, None, rank = rank, ifAny = ifAny) def decideNewlinesOnlyAfterClose(close: FT)(implicit fileLine: FileLine, @@ -214,7 +234,7 @@ object PolicyOps { def decideNewlinesOnlyAfterClose(split: Split, rank: Int = 0)(close: FT)( implicit fileLine: FileLine, - ): Policy = new DecideNewlinesOnlyAfterToken(close, Option(split), rank) + ): Policy = DecideNewlinesOnlyAfterToken(close, Option(split), rank) def decideNewlinesOnlyAfterToken(token: FT)(implicit fileLine: FileLine, @@ -223,7 +243,7 @@ object PolicyOps { def decideNewlinesOnlyAfterToken(rank: Int, ifAny: Boolean = false)( token: FT, )(implicit fileLine: FileLine): Policy = - new DecideNewlinesOnlyAfterToken(token, None, rank = rank, ifAny = ifAny) + DecideNewlinesOnlyAfterToken(token, None, rank = rank, ifAny = ifAny) def unindentAtExclude(exclude: TokenRanges, indent: Length): Policy = exclude .ranges.foldLeft(Policy.noPolicy) { case (policy, range) =>