diff options
author | Martin Odersky <odersky@gmail.com> | 2013-02-09 10:03:23 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-02-09 10:03:23 +0100 |
commit | 3debc923154bb5beec8d08b88e8f96ae18ee3734 (patch) | |
tree | 8d87997ddfc293ba24f1bba3057c9b7b58d93b7f /src/dotty/tools/dotc/core/Definitions.scala | |
parent | 25e09861e097b8db659ba1fc2d103e540db86a22 (diff) | |
download | dotty-3debc923154bb5beec8d08b88e8f96ae18ee3734.tar.gz dotty-3debc923154bb5beec8d08b88e8f96ae18ee3734.tar.bz2 dotty-3debc923154bb5beec8d08b88e8f96ae18ee3734.zip |
Integration of Constants
Diffstat (limited to 'src/dotty/tools/dotc/core/Definitions.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/Definitions.scala | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/core/Definitions.scala b/src/dotty/tools/dotc/core/Definitions.scala index 769f108f7..b399a77c4 100644 --- a/src/dotty/tools/dotc/core/Definitions.scala +++ b/src/dotty/tools/dotc/core/Definitions.scala @@ -107,6 +107,18 @@ class Definitions(implicit ctx: Context) { lazy val JavaRepeatedParamClass = specialPolyClass(tpnme.JAVA_REPEATED_PARAM_CLASS, Contravariant, AnyRefType, ArrayType) lazy val RepeatedParamClass = specialPolyClass(tpnme.REPEATED_PARAM_CLASS, Covariant, AnyRefType, SeqType) + // fundamental reference classes + lazy val PartialFunctionClass = requiredClass("scala.PartialFunction") + lazy val AbstractPartialFunctionClass = requiredClass("scala.runtime.AbstractPartialFunction") + lazy val SymbolClass = requiredClass("scala.Symbol") + lazy val StringClass = requiredClass("java.lang.String") + lazy val ClassClass = requiredClass("java.lang.Class") + //def Class_getMethod = getMemberMethod(ClassClass, nme.getMethod_) + lazy val DynamicClass = requiredClass("scala.Dynamic") + lazy val BoxedNumberClass = requiredClass("java.lang.Number") + lazy val JavaSerializableClass = requiredClass("java.lang.Serializable") + lazy val ComparableClass = requiredClass("java.lang.Comparable") + lazy val AnyType = AnyClass.typeConstructor lazy val AnyValType = AnyValClass.typeConstructor lazy val ObjectType = ObjectClass.typeConstructor @@ -117,10 +129,17 @@ class Definitions(implicit ctx: Context) { lazy val SeqType = SeqClass.typeConstructor lazy val ArrayType = ArrayClass.typeConstructor + def ClassType(arg: Type)(implicit ctx: Context) = { + val ctype = ClassClass.typeConstructor + if (ctx.phase.erasedTypes) ctype else ctype.appliedTo(arg) + } - lazy val BoxedNumberClass = requiredClass("java.lang.Number") - lazy val JavaSerializableClass = requiredClass("java.lang.Serializable") - lazy val ComparableClass = requiredClass("java.lang.Comparable") + def EnumType(sym: Symbol)(implicit ctx: Context) = + // given (in java): "class A { enum E { VAL1 } }" + // - sym: the symbol of the actual enumeration value (VAL1) + // - .owner: the ModuleClassSymbol of the enumeration (object E) + // - .linkedClassOfClass: the ClassSymbol of the enumeration (class E) + sym.owner.linkedClass.typeConstructor // ----- Class sets --------------------------------------------------- |