Skip to content

Commit 4b580e0

Browse files
committed
Introduce perRun scheme in Definitions
Use an IFT instead of duplicating Type and Symbol definitions everywhere. (reverted from commit 45917fc)
1 parent 2b2a6a1 commit 4b580e0

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

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

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,6 @@ object Definitions {
2828
* else without affecting the set of programs that can be compiled.
2929
*/
3030
val MaxImplementedFunctionArity: Int = MaxTupleArity
31-
32-
type SymbolPerRun = given Context => Symbol
33-
34-
def perRun(tp: NamedType): given Context => Symbol =
35-
tp.symbol
36-
37-
def perRunClass(tp: TypeRef): given Context => ClassSymbol = tp.symbol.asClass
3831
}
3932

4033
/** A class defining symbols and types of standard definitions
@@ -451,14 +444,19 @@ class Definitions {
451444
@threadUnsafe lazy val SeqType: TypeRef =
452445
if (isNewCollections) ctx.requiredClassRef("scala.collection.immutable.Seq")
453446
else ctx.requiredClassRef("scala.collection.Seq")
454-
def SeqClass: ClassSymbol = perRunClass(SeqType)
455-
456-
@threadUnsafe lazy val Seq_apply: SymbolPerRun = perRun(SeqClass.requiredMethodRef(nme.apply))
457-
@threadUnsafe lazy val Seq_head: SymbolPerRun = perRun(SeqClass.requiredMethodRef(nme.head))
458-
@threadUnsafe lazy val Seq_drop: SymbolPerRun = perRun(SeqClass.requiredMethodRef(nme.drop))
459-
@threadUnsafe lazy val Seq_lengthCompare: SymbolPerRun = perRun(SeqClass.requiredMethodRef(nme.lengthCompare, List(IntType)))
460-
@threadUnsafe lazy val Seq_length: SymbolPerRun = perRun(SeqClass.requiredMethodRef(nme.length))
461-
@threadUnsafe lazy val Seq_toSeq: SymbolPerRun = perRun(SeqClass.requiredMethodRef(nme.toSeq))
447+
def SeqClass(implicit ctx: Context): ClassSymbol = SeqType.symbol.asClass
448+
@threadUnsafe lazy val Seq_applyR: TermRef = SeqClass.requiredMethodRef(nme.apply)
449+
def Seq_apply(implicit ctx: Context): Symbol = Seq_applyR.symbol
450+
@threadUnsafe lazy val Seq_headR: TermRef = SeqClass.requiredMethodRef(nme.head)
451+
def Seq_head(implicit ctx: Context): Symbol = Seq_headR.symbol
452+
@threadUnsafe lazy val Seq_dropR: TermRef = SeqClass.requiredMethodRef(nme.drop)
453+
def Seq_drop(implicit ctx: Context): Symbol = Seq_dropR.symbol
454+
@threadUnsafe lazy val Seq_lengthCompareR: TermRef = SeqClass.requiredMethodRef(nme.lengthCompare, List(IntType))
455+
def Seq_lengthCompare(implicit ctx: Context): Symbol = Seq_lengthCompareR.symbol
456+
@threadUnsafe lazy val Seq_lengthR: TermRef = SeqClass.requiredMethodRef(nme.length)
457+
def Seq_length(implicit ctx: Context): Symbol = Seq_lengthR.symbol
458+
@threadUnsafe lazy val Seq_toSeqR: TermRef = SeqClass.requiredMethodRef(nme.toSeq)
459+
def Seq_toSeq(implicit ctx: Context): Symbol = Seq_toSeqR.symbol
462460

463461
@threadUnsafe lazy val ArrayType: TypeRef = ctx.requiredClassRef("scala.Array")
464462
def ArrayClass(implicit ctx: Context): ClassSymbol = ArrayType.symbol.asClass

0 commit comments

Comments
 (0)