aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Definitions.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-02-09 10:03:23 +0100
committerMartin Odersky <odersky@gmail.com>2013-02-09 10:03:23 +0100
commit3debc923154bb5beec8d08b88e8f96ae18ee3734 (patch)
tree8d87997ddfc293ba24f1bba3057c9b7b58d93b7f /src/dotty/tools/dotc/core/Definitions.scala
parent25e09861e097b8db659ba1fc2d103e540db86a22 (diff)
downloaddotty-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.scala25
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 ---------------------------------------------------