aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Definitions.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc/core/Definitions.scala')
-rw-r--r--src/dotty/tools/dotc/core/Definitions.scala17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/core/Definitions.scala b/src/dotty/tools/dotc/core/Definitions.scala
index efed9392d..0245928b2 100644
--- a/src/dotty/tools/dotc/core/Definitions.scala
+++ b/src/dotty/tools/dotc/core/Definitions.scala
@@ -149,6 +149,7 @@ class Definitions(implicit ctx: Context) {
def NullType: Type = NullClass.typeConstructor
def SeqType: Type = SeqClass.typeConstructor
def ArrayType: Type = ArrayClass.typeConstructor
+ def ObjectArrayType = ArrayType.appliedTo(ObjectType)
def UnitType: Type = UnitClass.typeConstructor
def BooleanType: Type = BooleanClass.typeConstructor
@@ -230,13 +231,27 @@ class Definitions(implicit ctx: Context) {
// ----- Initialization ---------------------------------------------------
+ /** Lists core classes that don't have underlying bytecode, but are synthesized on-the-fly in every reflection universe */
+ lazy val syntheticCoreClasses = List(
+ AnnotationDefaultAnnot, // #2264
+ RepeatedParamClass,
+ JavaRepeatedParamClass,
+ ByNameParamClass,
+ AnyClass,
+ AnyRefAlias,
+ AnyValClass,
+ NullClass,
+ NothingClass,
+ SingletonClass,
+ EqualsPatternClass)
+
private[this] var _isInitialized = false
def isInitialized = _isInitialized
def init() =
if (!_isInitialized) {
// force initialization of every symbol that is synthesized or hijacked by the compiler
- val forced = ???
+ val forced = syntheticCoreClasses
_isInitialized = true
}
}