Skip to content

Commit cf8f605

Browse files
committed
Avoid new name creation in isVarArityClass
1 parent 7dac549 commit cf8f605

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

compiler/src/dotty/tools/dotc/core/Definitions.scala

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,11 +1050,15 @@ class Definitions {
10501050
def scalaClassName(ref: Type)(using Context): TypeName = scalaClassName(ref.classSymbol)
10511051

10521052
private def isVarArityClass(cls: Symbol, prefix: String) =
1053-
cls.isClass && cls.owner.eq(ScalaPackageClass) &&
1054-
cls.name.testSimple(name =>
1055-
name.startsWith(prefix) &&
1056-
name.length > prefix.length &&
1057-
name.drop(prefix.length).forall(_.isDigit))
1053+
cls.isClass
1054+
&& cls.owner.eq(ScalaPackageClass)
1055+
&& cls.name.testSimple(name =>
1056+
name.startsWith(prefix)
1057+
&& name.length > prefix.length
1058+
&& digitsOnlyAfter(name, prefix.length))
1059+
1060+
private def digitsOnlyAfter(name: SimpleName, idx: Int): Boolean =
1061+
idx == name.length || name(idx).isDigit && digitsOnlyAfter(name, idx + 1)
10581062

10591063
def isBottomClass(cls: Symbol): Boolean =
10601064
if (ctx.explicitNulls && !ctx.phase.erasedTypes) cls == NothingClass

0 commit comments

Comments
 (0)