summaryrefslogtreecommitdiff
path: root/src/compiler/scala/reflect/internal/Definitions.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-02-04 14:36:14 -0800
committerPaul Phillips <paulp@improving.org>2012-02-04 17:36:31 -0800
commitc6a783ac089d8cf5a60a98946af5e80aff5a7d32 (patch)
tree2f081bad580c0fcb45b2a0ecb0e4bcc225879bbb /src/compiler/scala/reflect/internal/Definitions.scala
parent513710c5277ef8870ba3f5c7c9bebe40068ce4af (diff)
downloadscala-c6a783ac089d8cf5a60a98946af5e80aff5a7d32.tar.gz
scala-c6a783ac089d8cf5a60a98946af5e80aff5a7d32.tar.bz2
scala-c6a783ac089d8cf5a60a98946af5e80aff5a7d32.zip
Making AnyVal into a class instead of a trait.
-- traits can extend Any, AnyRef, or AnyVal -- classes can extend AnyRef or AnyVal but not Any. This breaks reflection for the moment as it smuggles AnyVal so far downstream that it's reflecting its way into bytecode (or something) but the following test case goes five for six as anticipated. trait Foo1 extends Any trait Foo2 extends AnyVal trait Foo3 extends AnyRef class Bar1 extends Any // fail @inline class Bar2 extends AnyVal class Bar3 extends AnyRef Eliminated various hijinx from definitions.
Diffstat (limited to 'src/compiler/scala/reflect/internal/Definitions.scala')
-rw-r--r--src/compiler/scala/reflect/internal/Definitions.scala29
1 files changed, 6 insertions, 23 deletions
diff --git a/src/compiler/scala/reflect/internal/Definitions.scala b/src/compiler/scala/reflect/internal/Definitions.scala
index 82d7f947e6..7bd0c0f919 100644
--- a/src/compiler/scala/reflect/internal/Definitions.scala
+++ b/src/compiler/scala/reflect/internal/Definitions.scala
@@ -230,17 +230,12 @@ trait Definitions extends reflect.api.StandardDefinitions {
lazy val AnyCompanionClass = getRequiredClass("scala.AnyCompanion") initFlags (SEALED | ABSTRACT | TRAIT)
lazy val AnyValCompanionClass = getRequiredClass("scala.AnyValCompanion") initFlags (SEALED | ABSTRACT | TRAIT)
- private var oldValueScheme = true
-
- lazy val AnyValClass = ScalaPackageClass.info member tpnme.AnyVal
-// lazy val AnyValClass = ScalaPackageClass.info member tpnme.AnyVal orElse {
-// // println("new anyval")
-// oldValueScheme = true
-// val anyval = enterNewClass(ScalaPackageClass, tpnme.AnyVal, anyparam, 0L)
-// val av_constr = anyval.newClassConstructor(NoPosition)
-// anyval.info.decls enter av_constr
-// anyval
-// }
+ lazy val AnyValClass = ScalaPackageClass.info member tpnme.AnyVal orElse {
+ val anyval = enterNewClass(ScalaPackageClass, tpnme.AnyVal, List(AnyClass.tpe, NotNullClass.tpe), 0L)
+ val av_constr = anyval.newClassConstructor(NoPosition)
+ anyval.info.decls enter av_constr
+ anyval
+ }
lazy val AnyVal_getClass = enterNewMethod(AnyValClass, nme.getClass_, Nil, getClassReturnType(AnyValClass.tpe))
// bottom types
@@ -1077,22 +1072,10 @@ trait Definitions extends reflect.api.StandardDefinitions {
Object_synchronized,
Object_isInstanceOf,
Object_asInstanceOf,
- //AnyVal_getClass,
String_+,
ComparableClass
)
- /* Removing the anyref parent they acquire from having a source file.
- */
- if (oldValueScheme) {
- setParents(AnyValClass, List(NotNullClass.tpe, AnyClass.tpe))
- } else {
- AnyVal_getClass // force it!
- }
- ScalaValueClasses foreach { sym =>
- setParents(sym, anyvalparam)
- }
-
isInitialized = true
} //init