summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/symtab/Definitions.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-11-16 21:30:36 +0000
committerPaul Phillips <paulp@improving.org>2009-11-16 21:30:36 +0000
commit773b7a287b7db8793b971e2aa920d5c56c7b4b51 (patch)
tree05ee38485e1d527815d7d00967965bf0bd678d9f /src/compiler/scala/tools/nsc/symtab/Definitions.scala
parent0da0208af4e3824e9ccc5fe8fe641ee541737fcc (diff)
downloadscala-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.scala73
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