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.scala70
1 files changed, 43 insertions, 27 deletions
diff --git a/src/dotty/tools/dotc/core/Definitions.scala b/src/dotty/tools/dotc/core/Definitions.scala
index 3e5e8b8af..587f244e0 100644
--- a/src/dotty/tools/dotc/core/Definitions.scala
+++ b/src/dotty/tools/dotc/core/Definitions.scala
@@ -3,11 +3,12 @@
* @author Martin Odersky
*/
-package dotty.tools.dotc
+package dotty.tools
+package dotc
package core
-import Types._, Contexts._, Symbols._, SymDenotations._, StdNames._, Names._
-import Flags._, Scopes._, Decorators._, NameOps._
+import Types._, Contexts._, Symbols._, Denotations._, SymDenotations._, StdNames._, Names._
+import Flags._, Scopes._, Decorators._, NameOps._, Positions._
import scala.annotation.{ switch, meta }
import scala.collection.{ mutable, immutable }
import PartialFunction._
@@ -20,9 +21,8 @@ object Definitions {
class Definitions(implicit ctx: Context) {
import Definitions._
- def requiredPackage(str: String): TermSymbol = ???
- def requiredClass(str: String): ClassSymbol = ???
- def requiredModule(str: String): TermSymbol = ???
+
+ import ctx.{requiredClass, requiredModule, requiredPackage}
private def newSyntheticTypeParam(cls: ClassSymbol, scope: Scope, suffix: String = "T0") = {
val tname = suffix.toTypeName.expandedName(cls)
@@ -41,7 +41,7 @@ class Definitions(implicit ctx: Context) {
val parentRefs: List[TypeRef] = ctx.normalizeToRefs(parents, cls, paramDecls)
CompleteClassDenotation(cls, ScalaPackageClass, name, flags, parentRefs, decls = paramDecls)(ctx)
}
- new ClassSymbol(classDenot)
+ new ClassSymbol(NoOffset, classDenot)
}
private def mkArityArray(name: String, arity: Int, countFrom: Int): Array[ClassSymbol] = {
@@ -55,6 +55,9 @@ class Definitions(implicit ctx: Context) {
lazy val RootPackage: TermSymbol = ctx.newSymbol(
NoSymbol, nme.ROOTPKG, PackageCreationFlags, TypeRef(NoPrefix, RootClass))
+ lazy val EmptyPackageClass = ctx.newPackageSymbols(RootClass, nme.EMPTY_PACKAGE)._2
+ lazy val EmptyPackageVal = EmptyPackageClass.sourceModule
+
lazy val ScalaPackageVal = requiredPackage("scala")
lazy val ScalaPackageClass = ScalaPackageVal.moduleClass.asClass
lazy val JavaPackageVal = requiredPackage("java")
@@ -70,9 +73,9 @@ class Definitions(implicit ctx: Context) {
lazy val NotNullClass = requiredClass("scala.NotNull")
lazy val NothingClass: ClassSymbol = ctx.newClassSymbol(
- ScalaPackageClass, tpnme.Nothing, UninstantiatableFlags, List(AnyType)).entered
+ ScalaPackageClass, tpnme.Nothing, UninstantiatableFlags, List(AnyClass.typeConstructor)).entered
lazy val NullClass: ClassSymbol = ctx.newClassSymbol(
- ScalaPackageClass, tpnme.Null, UninstantiatableFlags, List(AnyRefType)).entered
+ ScalaPackageClass, tpnme.Null, UninstantiatableFlags, List(AnyRefAlias.typeConstructor)).entered
lazy val PredefModule = requiredModule("scala.Predef")
@@ -118,20 +121,40 @@ class Definitions(implicit ctx: Context) {
lazy val BoxedNumberClass = requiredClass("java.lang.Number")
lazy val JavaSerializableClass = requiredClass("java.lang.Serializable")
lazy val ComparableClass = requiredClass("java.lang.Comparable")
- lazy val AnnotationClass = requiredClass("scala.annotation.Annotation")
- lazy val AnyType = AnyClass.typeConstructor
- lazy val AnyValType = AnyValClass.typeConstructor
- lazy val ObjectType = ObjectClass.typeConstructor
- lazy val AnyRefType = AnyRefAlias.typeConstructor
- lazy val NotNullType = NotNullClass.typeConstructor
- lazy val NothingType = NothingClass.typeConstructor
- lazy val NullType = NullClass.typeConstructor
- lazy val SeqType = SeqClass.typeConstructor
- lazy val ArrayType = ArrayClass.typeConstructor
+ // Annotation base classes
+ lazy val AnnotationClass = requiredClass("scala.annotation.Annotation")
+ lazy val ClassfileAnnotationClass = requiredClass("scala.annotation.ClassfileAnnotation")
+ lazy val StaticAnnotationClass = requiredClass("scala.annotation.StaticAnnotation")
+
+ lazy val AnyType: Type = AnyClass.typeConstructor
+ lazy val AnyValType: Type = AnyValClass.typeConstructor
+ lazy val ObjectType: Type = ObjectClass.typeConstructor
+ lazy val AnyRefType: Type = AnyRefAlias.typeConstructor
+ lazy val NotNullType: Type = NotNullClass.typeConstructor
+ lazy val NothingType: Type = NothingClass.typeConstructor
+ lazy val NullType: Type = NullClass.typeConstructor
+ lazy val SeqType: Type = SeqClass.typeConstructor
+ lazy val ArrayType: Type = ArrayClass.typeConstructor
+
+ lazy val UnitType: Type = UnitClass.typeConstructor
+ lazy val BooleanType: Type = BooleanClass.typeConstructor
+ lazy val ByteType: Type = ByteClass.typeConstructor
+ lazy val ShortType: Type = ShortClass.typeConstructor
+ lazy val CharType: Type = CharClass.typeConstructor
+ lazy val IntType: Type = IntClass.typeConstructor
+ lazy val LongType: Type = LongClass.typeConstructor
+ lazy val FloatType: Type = FloatClass.typeConstructor
+ lazy val DoubleType: Type = DoubleClass.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
@@ -722,8 +745,6 @@ class Definitions(implicit ctx: Context) {
lazy val StringContextClass = requiredClass[scala.StringContext]
def StringContext_f = getMemberMethod(StringContextClass, nme.f)
- lazy val ScalaSignatureAnnotation = requiredClass[scala.reflect.ScalaSignature]
- lazy val ScalaLongSignatureAnnotation = requiredClass[scala.reflect.ScalaLongSignature]
// Option classes
lazy val OptionClass: ClassSymbol = requiredClass[Option[_]]
@@ -1113,10 +1134,6 @@ class Definitions(implicit ctx: Context) {
def BoxedUnit_UNIT = getMemberValue(BoxedUnitModule, nme.UNIT)
def BoxedUnit_TYPE = getMemberValue(BoxedUnitModule, nme.TYPE_)
- // Annotation base classes
- lazy val AnnotationClass = requiredClass[scala.annotation.Annotation]
- lazy val ClassfileAnnotationClass = requiredClass[scala.annotation.ClassfileAnnotation]
- lazy val StaticAnnotationClass = requiredClass[scala.annotation.StaticAnnotation]
// Annotations
lazy val BridgeClass = requiredClass[scala.annotation.bridge]
@@ -1134,7 +1151,6 @@ class Definitions(implicit ctx: Context) {
lazy val BeanPropertyAttr = requiredClass[scala.beans.BeanProperty]
lazy val BooleanBeanPropertyAttr = requiredClass[scala.beans.BooleanBeanProperty]
lazy val CloneableAttr = requiredClass[scala.annotation.cloneable]
- lazy val DeprecatedAttr = requiredClass[scala.deprecated]
lazy val DeprecatedNameAttr = requiredClass[scala.deprecatedName]
lazy val DeprecatedInheritanceAttr = requiredClass[scala.deprecatedInheritance]
lazy val DeprecatedOverridingAttr = requiredClass[scala.deprecatedOverriding]
@@ -1453,4 +1469,4 @@ class Definitions(implicit ctx: Context) {
}
}
}
-*/ \ No newline at end of file
+*/