diff options
author | Paul Phillips <paulp@improving.org> | 2012-01-30 12:42:26 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-01-30 22:18:25 -0800 |
commit | a9eb9c5b69071a944d2a5225aa320babdf33ad42 (patch) | |
tree | 52c6353685c24c2101f8a963a66068a703405584 /src/library | |
parent | 74a252e668959dd2cf4808132473d8b15bb606af (diff) | |
download | scala-a9eb9c5b69071a944d2a5225aa320babdf33ad42.tar.gz scala-a9eb9c5b69071a944d2a5225aa320babdf33ad42.tar.bz2 scala-a9eb9c5b69071a944d2a5225aa320babdf33ad42.zip |
More work on inline classes.
Fail compile if AnyVal is inherited by a trait, a non-@inline
class, or a class with an AnyRef parent somewhere. Added tests.
Added logging, like
[log extmethods] Inline class class Bippy spawns extension method.
Old: def getClass: Class[_ <: Bippy]
New: final def extension$getClass($this: Bippy): Class[_ <: Bippy]
Fixed what I hope was a bug in ExtensionMethods where the original
method params were dropped.
Since adding a NonNull parent was also inflicting an AnyRef on AnyVal
subclasses, suppressed that for those. Had the bright idea that AnyVal
could extend NotNull. It doesn't seem to accomplish much, but then,
I don't think NotNull accomplishes much. Still, maybe it's time to
restrict the ways one can use AnyVal so one can't do this:
scala> var x: AnyVal = _
x: AnyVal = null
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/AnyVal.scala | 2 | ||||
-rw-r--r-- | src/library/scala/NotNull.scala | 2 |
2 files changed, 1 insertions, 3 deletions
diff --git a/src/library/scala/AnyVal.scala b/src/library/scala/AnyVal.scala index fb36d61c57..ed32fb7302 100644 --- a/src/library/scala/AnyVal.scala +++ b/src/library/scala/AnyVal.scala @@ -25,7 +25,7 @@ package scala * The ''integer types'' include the subrange types as well as [[scala.Int]] and [[scala.Long]]. * The ''floating point types'' are [[scala.Float]] and [[scala.Double]]. */ -trait AnyVal { +trait AnyVal extends NotNull { // disabled for now to make the standard build go through. // Once we have a new strap we can uncomment this and delete the AnyVal_getClass entry in Definitions. // def getClass(): Class[_ <: AnyVal] = ??? diff --git a/src/library/scala/NotNull.scala b/src/library/scala/NotNull.scala index d47d47a83e..f90b95c789 100644 --- a/src/library/scala/NotNull.scala +++ b/src/library/scala/NotNull.scala @@ -6,8 +6,6 @@ ** |/ ** \* */ - - package scala /** |