diff options
author | Martin Odersky <odersky@gmail.com> | 2013-02-18 09:41:11 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-02-18 09:41:11 +0100 |
commit | 2b4a19e80a643dfdf8eea5fa40811f76edb27be3 (patch) | |
tree | 564455c04aba5c2da721a188e85163e5240957c5 /src/dotty/tools/dotc/core/Definitions.scala | |
parent | 6bd453e8f3b50e7c48b6969bd4aaf6638b0455f8 (diff) | |
download | dotty-2b4a19e80a643dfdf8eea5fa40811f76edb27be3.tar.gz dotty-2b4a19e80a643dfdf8eea5fa40811f76edb27be3.tar.bz2 dotty-2b4a19e80a643dfdf8eea5fa40811f76edb27be3.zip |
Fleshed out TypeTreeGen.
All base cases now supported. Still missing: Intelligent treatment of positions.
Diffstat (limited to 'src/dotty/tools/dotc/core/Definitions.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/Definitions.scala | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/dotty/tools/dotc/core/Definitions.scala b/src/dotty/tools/dotc/core/Definitions.scala index 587f244e0..461f574c5 100644 --- a/src/dotty/tools/dotc/core/Definitions.scala +++ b/src/dotty/tools/dotc/core/Definitions.scala @@ -111,6 +111,7 @@ class Definitions(implicit ctx: Context) { lazy val RepeatedParamClass = specialPolyClass(tpnme.REPEATED_PARAM_CLASS, Covariant, AnyRefType, SeqType) // fundamental reference classes + lazy val PairClass = requiredClass("dotty.Pair") lazy val PartialFunctionClass = requiredClass("scala.PartialFunction") lazy val AbstractPartialFunctionClass = requiredClass("scala.runtime.AbstractPartialFunction") lazy val SymbolClass = requiredClass("scala.Symbol") @@ -127,6 +128,16 @@ class Definitions(implicit ctx: Context) { lazy val ClassfileAnnotationClass = requiredClass("scala.annotation.ClassfileAnnotation") lazy val StaticAnnotationClass = requiredClass("scala.annotation.StaticAnnotation") + // Annotation classes + lazy val AliasAnnot = requiredClass("dotty.annotation.internal.Alias") + lazy val ChildAnnot = requiredClass("dotty.annotation.internal.Alias") + lazy val ScalaSignatureAnnot = requiredClass("scala.reflect.ScalaSignature") + lazy val ScalaLongSignatureAnnot = requiredClass("scala.reflect.ScalaLongSignature") + lazy val DeprecatedAnnot = requiredClass("scala.deprecated") + lazy val AnnotationDefaultAnnot = requiredClass("dotty.runtime.AnnotationDefault") + lazy val ThrowsAnnot = requiredClass("scala.throws") + + // Derived types lazy val AnyType: Type = AnyClass.typeConstructor lazy val AnyValType: Type = AnyValClass.typeConstructor lazy val ObjectType: Type = ObjectClass.typeConstructor @@ -146,16 +157,9 @@ class Definitions(implicit ctx: Context) { lazy val LongType: Type = LongClass.typeConstructor lazy val FloatType: Type = FloatClass.typeConstructor lazy val DoubleType: Type = DoubleClass.typeConstructor + lazy val PairType: Type = PairClass.typeConstructor lazy val JavaRepeatedParamType = JavaRepeatedParamClass.typeConstructor - lazy val AliasAnnot = requiredClass("dotty.annotation.internal.Alias") - lazy val ChildAnnot = requiredClass("dotty.annotation.internal.Alias") - lazy val ScalaSignatureAnnot = requiredClass("scala.reflect.ScalaSignature") - lazy val ScalaLongSignatureAnnot = requiredClass("scala.reflect.ScalaLongSignature") - lazy val DeprecatedAnnot = requiredClass("scala.deprecated") - lazy val AnnotationDefaultAnnot = requiredClass("dotty.runtime.AnnotationDefault") - lazy val ThrowsAnnot = requiredClass("scala.throws") - def ClassType(arg: Type)(implicit ctx: Context) = { val ctype = ClassClass.typeConstructor if (ctx.phase.erasedTypes) ctype else ctype.appliedTo(arg) @@ -168,6 +172,9 @@ class Definitions(implicit ctx: Context) { // - .linkedClassOfClass: the ClassSymbol of the enumeration (class E) sym.owner.linkedClass.typeConstructor + def FunctionType(args: List[Type], resultType: Type) = + FunctionClass(args.length).typeConstructor.appliedTo(args :+ resultType) + // ----- Class sets --------------------------------------------------- lazy val FunctionClass = mkArityArray("Function", MaxFunctionArity, 0) |