Skip to content

Commit

Permalink
FormatOps vertical multiline: fix interleaved defs
Browse files Browse the repository at this point in the history
  • Loading branch information
kitbellew committed Feb 20, 2023
1 parent 8951c58 commit 122fdd6
Show file tree
Hide file tree
Showing 5 changed files with 249 additions and 65 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1191,12 +1191,28 @@ class FormatOps(
val indentSep = Num((indentParam.n - 2).max(0))
val isBracket = open.is[T.LeftBracket]

val allParenOwners = (lpParent match {
case Some(t: Tree.WithParamClauses) => t.paramClauses
case Some(t: Stat.WithCtor) => t.ctor.paramClauses
def getClausesFromClauseGroup(tree: Member.ParamClauseGroup) = {
val tparams = tree.tparamClause
val params = tree.paramClauses
if (tparams.isEmpty) params else tparams :: params
}
val allClauses = lpOwner match {
case ParamClauseParent(p) =>
p match {
case t: Tree.WithParamClauseGroups =>
t.paramClauseGroups.flatMap(getClausesFromClauseGroup)
case t: Tree.WithParamClauseGroup =>
t.paramClauseGroup.map(getClausesFromClauseGroup).getOrElse(Nil)
case t: Stat.WithCtor with Tree.WithTParamClause =>
t.tparamClause +: t.ctor.paramClauses
case t: Tree.WithParamClauses => t.paramClauses
case t: Stat.WithCtor => t.ctor.paramClauses
case t: Tree.WithTParamClause => t.tparamClause :: Nil
case _ => Nil
}
case _ => Nil
}).filter(_.pos.start > open.start)

}
val allParenOwners = allClauses.filter(_.pos.start > open.start)
val allOwners = lpOwner +: allParenOwners

// find the last param on the defn so that we can apply our `policy`
Expand Down
72 changes: 57 additions & 15 deletions scalafmt-tests/src/test/resources/scala3/OptionalBraces.stat
Original file line number Diff line number Diff line change
Expand Up @@ -4127,15 +4127,23 @@ object a:
class F(a: A, as: A*)(b: B, bs: B*)(implicit c: C, d: D, implicit e: E) {}
>>>
object a:
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)(implicit c: C
): B = ???
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)[C](implicit c: C): B = ???
)[C](
implicit c: C
): B = ???
class F(
a: A,
as: A*
Expand Down Expand Up @@ -4171,15 +4179,23 @@ object a:
class F(a: A, as: A*)(b: B, bs: B*)(implicit c: C, d: D, implicit e: E) {}
>>>
object a:
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)(implicit c: C
): B = ???
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)[C](implicit c: C): B = ???
)[C](
implicit c: C
): B = ???
class F(
a: A,
as: A*
Expand Down Expand Up @@ -4214,15 +4230,23 @@ object a:
class F(a: A, as: A*)(b: B, bs: B*)(implicit c: C, d: D, implicit e: E) {}
>>>
object a:
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)(implicit c: C
): B = ???
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)[C](implicit c: C): B = ???
)[C](
implicit c: C
): B = ???
class F(
a: A,
as: A*
Expand Down Expand Up @@ -4258,13 +4282,19 @@ object a:
class F(a: A, as: A*)(b: B, bs: B*)(implicit c: C, d: D, implicit e: E) {}
>>>
object a:
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)(implicit
c: C
): B = ???
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)[C](
Expand Down Expand Up @@ -4311,13 +4341,19 @@ object a:
class F(a: A, as: A*)(b: B, bs: B*)(implicit c: C, d: D, implicit e: E) {}
>>>
object a:
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)(
implicit c: C
): B = ???
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)[C](
Expand Down Expand Up @@ -4360,14 +4396,20 @@ object a:
class F(a: A, as: A*)(b: B, bs: B*)(implicit c: C, d: D, implicit e: E) {}
>>>
object a:
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)(
implicit
c: C
): B = ???
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)[C](
Expand Down
72 changes: 57 additions & 15 deletions scalafmt-tests/src/test/resources/scala3/OptionalBraces_fold.stat
Original file line number Diff line number Diff line change
Expand Up @@ -3938,15 +3938,23 @@ object a:
class F(a: A, as: A*)(b: B, bs: B*)(implicit c: C, d: D, implicit e: E) {}
>>>
object a:
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)(implicit c: C
): B = ???
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)[C](implicit c: C): B = ???
)[C](
implicit c: C
): B = ???
class F(
a: A,
as: A*
Expand Down Expand Up @@ -3982,15 +3990,23 @@ object a:
class F(a: A, as: A*)(b: B, bs: B*)(implicit c: C, d: D, implicit e: E) {}
>>>
object a:
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)(implicit c: C
): B = ???
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)[C](implicit c: C): B = ???
)[C](
implicit c: C
): B = ???
class F(
a: A,
as: A*
Expand Down Expand Up @@ -4025,15 +4041,23 @@ object a:
class F(a: A, as: A*)(b: B, bs: B*)(implicit c: C, d: D, implicit e: E) {}
>>>
object a:
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)(implicit c: C
): B = ???
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)[C](implicit c: C): B = ???
)[C](
implicit c: C
): B = ???
class F(
a: A,
as: A*
Expand Down Expand Up @@ -4069,13 +4093,19 @@ object a:
class F(a: A, as: A*)(b: B, bs: B*)(implicit c: C, d: D, implicit e: E) {}
>>>
object a:
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)(implicit
c: C
): B = ???
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)[C](
Expand Down Expand Up @@ -4122,13 +4152,19 @@ object a:
class F(a: A, as: A*)(b: B, bs: B*)(implicit c: C, d: D, implicit e: E) {}
>>>
object a:
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)(
implicit c: C
): B = ???
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)[C](
Expand Down Expand Up @@ -4171,14 +4207,20 @@ object a:
class F(a: A, as: A*)(b: B, bs: B*)(implicit c: C, d: D, implicit e: E) {}
>>>
object a:
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)(
implicit
c: C
): B = ???
def f[A](a: A, as: A*)[B](
def f[A](
a: A,
as: A*
)[B](
b: B,
bs: B*
)[C](
Expand Down
Loading

0 comments on commit 122fdd6

Please sign in to comment.