Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PolicyOps: use Policy.Delay for decideNewlineXxx #4585

Merged
merged 1 commit into from
Nov 23, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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) =>
Expand Down