Skip to content

Commit 28e9af3

Browse files
committed
Optimize termParamss
1 parent 127f498 commit 28e9af3

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

compiler/src/dotty/tools/dotc/ast/Trees.scala

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -773,11 +773,8 @@ object Trees {
773773
case _ => paramss
774774

775775
def termParamss(using Context): List[List[ValDef[T]]] =
776-
if ctx.erasedTypes then paramss.asInstanceOf[List[List[ValDef[T]]]]
777-
else paramss.collect {
778-
case Nil => Nil
779-
case vparams @ (vparam: ValDef[_]) :: _ => vparams.asInstanceOf[List[ValDef[T]]]
780-
}
776+
(if ctx.erasedTypes then paramss else untpd.termParamssIn(paramss))
777+
.asInstanceOf[List[List[ValDef[T]]]]
781778
}
782779

783780
/** mods class name template or
@@ -1605,6 +1602,16 @@ object Trees {
16051602
case (x: ValDef) :: _ => Some(xs.asInstanceOf[List[ValDef]])
16061603
case _ => None
16071604

1605+
def termParamssIn(paramss: List[ParamClause]): List[List[ValDef]] = paramss match
1606+
case ValDefs(vparams) :: paramss1 =>
1607+
val paramss2 = termParamssIn(paramss1)
1608+
if paramss2 eq paramss1 then paramss.asInstanceOf[List[List[ValDef]]]
1609+
else vparams :: paramss2
1610+
case _ :: paramss1 =>
1611+
termParamssIn(paramss1)
1612+
case nil =>
1613+
Nil
1614+
16081615
/** If `tparams` is non-empty, add it to the left `paramss`, merging
16091616
* it with a leading type parameter list of `paramss`, if one exists.
16101617
*/

0 commit comments

Comments
 (0)