summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2012-02-15 18:12:17 +0100
committerMartin Odersky <odersky@gmail.com>2012-02-15 18:12:34 +0100
commit186d8554456b6a2d024ada1bd2dd1a29cc0c430f (patch)
treeb0d863c596ec5515b88c13c6307c6586bb1dc24f
parentd638588797bff0998b588ba3552e6caefbf7b8e3 (diff)
downloadscala-186d8554456b6a2d024ada1bd2dd1a29cc0c430f.tar.gz
scala-186d8554456b6a2d024ada1bd2dd1a29cc0c430f.tar.bz2
scala-186d8554456b6a2d024ada1bd2dd1a29cc0c430f.zip
Trying generic value classes. Does not work yet, but fixed on bug already.
-rw-r--r--src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala4
-rw-r--r--test/files/run/GenericValueClass.scala12
2 files changed, 14 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala b/src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala
index e5f2d49d52..79dc6b4986 100644
--- a/src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala
+++ b/src/compiler/scala/tools/nsc/transform/ExtensionMethods.scala
@@ -152,8 +152,8 @@ abstract class ExtensionMethods extends Transform with TypingTransformers {
case stat @ ModuleDef(mods, name, tmpl @ Template(parents, self, body)) =>
extensionDefs.remove(stat.symbol) match {
case Some(buf) =>
- val extensionDefs = buf.toList map { mdef => atOwner(stat.symbol) { localTyper.typed(mdef) }}
- treeCopy.ModuleDef(stat, mods, name, treeCopy.Template(tmpl, parents, self, body ++ buf))
+ val extensionDefs = buf.toList map { mdef => atOwner(stat.symbol) { localTyper.typed(mdef) } }
+ treeCopy.ModuleDef(stat, mods, name, treeCopy.Template(tmpl, parents, self, body ++ extensionDefs))
case None =>
stat
}
diff --git a/test/files/run/GenericValueClass.scala b/test/files/run/GenericValueClass.scala
new file mode 100644
index 0000000000..10068d6cae
--- /dev/null
+++ b/test/files/run/GenericValueClass.scala
@@ -0,0 +1,12 @@
+class Box[T](val x: T) extends AnyVal {
+ def get: T = x
+}
+
+object Test extends App {
+ val b = new Box(1)
+ println(b.get)
+
+ val c = new Box("abc")
+ println(c.get)
+
+}