Skip to content

Commit a8b6646

Browse files
committed
Optimize some Definition methods
1 parent 59c8db0 commit a8b6646

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

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

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,17 +1084,22 @@ class Definitions {
10841084
)
10851085
private val compiletimePackageBooleanTypes: Set[Name] = Set(tpnme.Not, tpnme.Xor, tpnme.And, tpnme.Or)
10861086
private val compiletimePackageStringTypes: Set[Name] = Set(tpnme.Plus)
1087-
1088-
final def isCompiletimeAppliedType(sym: Symbol)(using Context): Boolean = {
1089-
def isOpsPackageObjectAppliedType: Boolean =
1090-
sym.owner == CompiletimeOpsPackageObjectAny.moduleClass && compiletimePackageAnyTypes.contains(sym.name) ||
1091-
sym.owner == CompiletimeOpsPackageObjectInt.moduleClass && compiletimePackageIntTypes.contains(sym.name) ||
1092-
sym.owner == CompiletimeOpsPackageObjectBoolean.moduleClass && compiletimePackageBooleanTypes.contains(sym.name) ||
1093-
sym.owner == CompiletimeOpsPackageObjectString.moduleClass && compiletimePackageStringTypes.contains(sym.name)
1094-
1095-
sym.isType && (isCompiletime_S(sym) || isOpsPackageObjectAppliedType)
1096-
}
1097-
1087+
private val compiletimePackageOpTypes: Set[Name] =
1088+
Set(tpnme.S)
1089+
++ compiletimePackageAnyTypes
1090+
++ compiletimePackageIntTypes
1091+
++ compiletimePackageBooleanTypes
1092+
++ compiletimePackageStringTypes
1093+
1094+
final def isCompiletimeAppliedType(sym: Symbol)(using Context): Boolean =
1095+
compiletimePackageOpTypes.contains(sym.name)
1096+
&& (
1097+
sym.owner == CompiletimePackageObject.moduleClass && sym.name == tpnme.S
1098+
|| sym.owner == CompiletimeOpsPackageObjectAny.moduleClass && compiletimePackageAnyTypes.contains(sym.name)
1099+
|| sym.owner == CompiletimeOpsPackageObjectInt.moduleClass && compiletimePackageIntTypes.contains(sym.name)
1100+
|| sym.owner == CompiletimeOpsPackageObjectBoolean.moduleClass && compiletimePackageBooleanTypes.contains(sym.name)
1101+
|| sym.owner == CompiletimeOpsPackageObjectString.moduleClass && compiletimePackageStringTypes.contains(sym.name)
1102+
)
10981103

10991104
// ----- Symbol sets ---------------------------------------------------
11001105

@@ -1143,8 +1148,11 @@ class Definitions {
11431148
def PolyFunctionType = PolyFunctionClass.typeRef
11441149

11451150
/** If `cls` is a class in the scala package, its name, otherwise EmptyTypeName */
1146-
def scalaClassName(cls: Symbol)(using Context): TypeName =
1147-
if (cls.isClass && cls.owner == ScalaPackageClass) cls.asClass.name else EmptyTypeName
1151+
def scalaClassName(cls: Symbol)(using Context): TypeName = cls.denot match
1152+
case clsd: ClassDenotation if clsd.owner eq ScalaPackageClass =>
1153+
clsd.name.asInstanceOf[TypeName]
1154+
case _ =>
1155+
EmptyTypeName
11481156

11491157
/** If type `ref` refers to a class in the scala package, its name, otherwise EmptyTypeName */
11501158
def scalaClassName(ref: Type)(using Context): TypeName = scalaClassName(ref.classSymbol)

0 commit comments

Comments
 (0)