summaryrefslogtreecommitdiff
path: root/test/files/pos/value-class-override-spec.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2012-05-26 22:49:12 +0200
committerJason Zaugg <jzaugg@gmail.com>2012-05-27 12:18:44 +0200
commitc82bc67737a31f2a639172e677cafdefe8fdbf4e (patch)
tree6da5069e6c92b72e36d5118cb79424f511d1fe2b /test/files/pos/value-class-override-spec.scala
parent688c558b0257636f8f46240616b8b3d448847a47 (diff)
downloadscala-c82bc67737a31f2a639172e677cafdefe8fdbf4e.tar.gz
scala-c82bc67737a31f2a639172e677cafdefe8fdbf4e.tar.bz2
scala-c82bc67737a31f2a639172e677cafdefe8fdbf4e.zip
Fix a NSDNHAO in extension methods.
A bridge method, created when we override a method from a superclass and refine the return type, was appearing as an overloaded alternative. (`erasure` doesn't create new scopes, so the bridges it builds are visible at earlier phases.) The problem was masked when compiling with specialization, which *does* create a new scope, shielding the code in question from the artefacts of erasure. To fix the problem, we filter out bridge methods from the overloaded alternatives returned by `.decl`, as would happen internally in `.member`.
Diffstat (limited to 'test/files/pos/value-class-override-spec.scala')
-rw-r--r--test/files/pos/value-class-override-spec.scala9
1 files changed, 9 insertions, 0 deletions
diff --git a/test/files/pos/value-class-override-spec.scala b/test/files/pos/value-class-override-spec.scala
new file mode 100644
index 0000000000..79de5d9305
--- /dev/null
+++ b/test/files/pos/value-class-override-spec.scala
@@ -0,0 +1,9 @@
+// There are two versions of this tests: one with and one without specialization.
+// The bug was only exposed *without* specialization.
+trait T extends Any {
+ def x: Any
+}
+
+final class StringOps(val repr0: String) extends AnyVal with T {
+ def x = ()
+}