diff options
author | Paul Phillips <paulp@improving.org> | 2009-11-16 21:30:36 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2009-11-16 21:30:36 +0000 |
commit | 773b7a287b7db8793b971e2aa920d5c56c7b4b51 (patch) | |
tree | 05ee38485e1d527815d7d00967965bf0bd678d9f /src/compiler/scala/tools/nsc/symtab/Definitions.scala | |
parent | 0da0208af4e3824e9ccc5fe8fe641ee541737fcc (diff) | |
download | scala-773b7a287b7db8793b971e2aa920d5c56c7b4b51.tar.gz scala-773b7a287b7db8793b971e2aa920d5c56c7b4b51.tar.bz2 scala-773b7a287b7db8793b971e2aa920d5c56c7b4b51.zip |
Some organization & duplication removal in GenI...
Some organization & duplication removal in GenICode stemming from
optimizer appeasement.
Diffstat (limited to 'src/compiler/scala/tools/nsc/symtab/Definitions.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/Definitions.scala | 73 |
1 files changed, 35 insertions, 38 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Definitions.scala b/src/compiler/scala/tools/nsc/symtab/Definitions.scala index 25c60c32b8..2ba0ee68b9 100644 --- a/src/compiler/scala/tools/nsc/symtab/Definitions.scala +++ b/src/compiler/scala/tools/nsc/symtab/Definitions.scala @@ -51,6 +51,25 @@ trait Definitions { lazy val anyvalparam = List(AnyValClass.typeConstructor) lazy val anyrefparam = List(AnyRefClass.typeConstructor) + // private parameter conveniences + private def booltype = BooleanClass.typeConstructor + private def boolparam = List(booltype) + private def bytetype = ByteClass.typeConstructor + private def byteparam = List(bytetype) + private def shorttype = ShortClass.typeConstructor + private def shortparam = List(shorttype) + private def inttype = IntClass.typeConstructor + private def intparam = List(inttype) + private def longtype = LongClass.typeConstructor + private def longparam = List(longtype) + private def floattype = FloatClass.typeConstructor + private def floatparam = List(floattype) + private def doubletype = DoubleClass.typeConstructor + private def doubleparam = List(doubletype) + private def chartype = CharClass.typeConstructor + private def charparam = List(chartype) + private def stringtype = StringClass.typeConstructor + // top types lazy val AnyClass = newClass(ScalaPackageClass, nme.Any, Nil) setFlag (ABSTRACT) lazy val AnyValClass = newClass(ScalaPackageClass, nme.AnyVal, anyparam) setFlag (ABSTRACT | SEALED) @@ -351,8 +370,13 @@ trait Definitions { var Object_== : Symbol = _ var Object_!= : Symbol = _ var Object_synchronized: Symbol = _ - var Object_isInstanceOf: Symbol = _ - var Object_asInstanceOf: Symbol = _ + lazy val Object_isInstanceOf = newPolyMethod( + ObjectClass, "$isInstanceOf", + tparam => MethodType(List(), booltype)) setFlag FINAL + lazy val Object_asInstanceOf = newPolyMethod( + ObjectClass, "$asInstanceOf", + tparam => MethodType(List(), tparam.typeConstructor)) setFlag FINAL + def Object_getClass = getMember(ObjectClass, nme.getClass_) def Object_clone = getMember(ObjectClass, nme.clone_) def Object_finalize = getMember(ObjectClass, nme.finalize_) @@ -572,26 +596,6 @@ trait Definitions { /** Sets-up symbols etc. for value classes, and their boxed versions. This * method is called once from within the body of init. */ private def initValueClasses() { - val booltype = BooleanClass.typeConstructor - val boolparam = List(booltype) - val bytetype = ByteClass.typeConstructor - val byteparam = List(bytetype) - val chartype = CharClass.typeConstructor - val charparam = List(chartype) - val shorttype = ShortClass.typeConstructor - val shortparam = List(shorttype) - val inttype = IntClass.typeConstructor - val intparam = List(inttype) - val longtype = LongClass.typeConstructor - val longparam = List(longtype) - - val floattype = FloatClass.typeConstructor - val floatparam = List(floattype) - val doubletype = DoubleClass.typeConstructor - val doubleparam = List(doubletype) - - val stringtype = StringClass.typeConstructor - // init scala.Boolean newParameterlessMethod(BooleanClass, nme.UNARY_!, booltype) List(nme.EQ, nme.NE, nme.ZOR, nme.ZAND, nme.OR, nme.AND, nme.XOR) foreach { @@ -619,7 +623,6 @@ trait Definitions { newParameterlessMethod(clazz, nme.toChar, chartype) newParameterlessMethod(clazz, nme.toInt, inttype) newParameterlessMethod(clazz, nme.toLong, longtype) - newParameterlessMethod(clazz, nme.toFloat, floattype) newParameterlessMethod(clazz, nme.toDouble, doubletype) @@ -730,7 +733,7 @@ trait Definitions { if (isInitialized) return isInitialized = true - EmptyPackageClass.setInfo(ClassInfoType(List(), new Scope, EmptyPackageClass)) + EmptyPackageClass.setInfo(ClassInfoType(Nil, new Scope, EmptyPackageClass)) EmptyPackage.setInfo(EmptyPackageClass.tpe) RootClass.info.decls.enter(EmptyPackage) RootClass.info.decls.enter(RootPackage) @@ -738,16 +741,13 @@ trait Definitions { abbrvTag(UnitClass) = 'V' initValueClasses() - val booltype = BooleanClass.typeConstructor // members of class scala.Any Any_== = newMethod(AnyClass, nme.EQ, anyparam, booltype) setFlag FINAL Any_!= = newMethod(AnyClass, nme.NE, anyparam, booltype) setFlag FINAL Any_equals = newMethod(AnyClass, nme.equals_, anyparam, booltype) - Any_hashCode = newMethod( - AnyClass, nme.hashCode_, List(), IntClass.typeConstructor) - Any_toString = newMethod( - AnyClass, nme.toString_, List(), StringClass.typeConstructor) + Any_hashCode = newMethod(AnyClass, nme.hashCode_, Nil, inttype) + Any_toString = newMethod(AnyClass, nme.toString_, Nil, stringtype) Any_isInstanceOf = newPolyMethod( AnyClass, nme.isInstanceOf_, tparam => booltype) setFlag FINAL @@ -762,16 +762,11 @@ trait Definitions { Object_synchronized = newPolyMethodCon( ObjectClass, nme.synchronized_, tparam => msym => MethodType(msym.newSyntheticValueParams(List(tparam.typeConstructor)), tparam.typeConstructor)) setFlag FINAL - Object_isInstanceOf = newPolyMethod( - ObjectClass, "$isInstanceOf", - tparam => MethodType(List(), booltype)) setFlag FINAL - Object_asInstanceOf = newPolyMethod( - ObjectClass, "$asInstanceOf", - tparam => MethodType(List(), tparam.typeConstructor)) setFlag FINAL + String_+ = newMethod( - StringClass, "+", anyparam, StringClass.typeConstructor) setFlag FINAL + StringClass, "+", anyparam, stringtype) setFlag FINAL - val forced = List( // force initialization of every symbol that is enetred as a side effect + val forced = List( // force initialization of every symbol that is entered as a side effect AnnotationDefaultAttr, RepeatedParamClass, JavaRepeatedParamClass, @@ -791,7 +786,9 @@ trait Definitions { NullClass, NothingClass, SingletonClass, - EqualsPatternClass + EqualsPatternClass, + Object_isInstanceOf, + Object_asInstanceOf ) // #2264 |