aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Definitions.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-02-18 09:41:11 +0100
committerMartin Odersky <odersky@gmail.com>2013-02-18 09:41:11 +0100
commit2b4a19e80a643dfdf8eea5fa40811f76edb27be3 (patch)
tree564455c04aba5c2da721a188e85163e5240957c5 /src/dotty/tools/dotc/core/Definitions.scala
parent6bd453e8f3b50e7c48b6969bd4aaf6638b0455f8 (diff)
downloaddotty-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.scala23
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)