summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-09-05 15:02:03 +1000
committerJason Zaugg <jzaugg@gmail.com>2014-09-05 15:02:03 +1000
commit87ca181e7b6874cce734a4a40f90fe4af2391d97 (patch)
treea3b9c1822365984c644015b8ab4f7abca0a8b803 /test
parent9753f23f9362b25a9f481b11dd8d51187187882a (diff)
parentf324ca5e14d29f8b4f6f7bbacc1c17f4233cd260 (diff)
downloadscala-87ca181e7b6874cce734a4a40f90fe4af2391d97.tar.gz
scala-87ca181e7b6874cce734a4a40f90fe4af2391d97.tar.bz2
scala-87ca181e7b6874cce734a4a40f90fe4af2391d97.zip
Merge pull request #3935 from lrytz/t8803
SI-8803 generate super accessor for super[A], if A is outer superclass
Diffstat (limited to 'test')
-rw-r--r--test/files/run/t8803.check16
-rw-r--r--test/files/run/t8803.scala57
2 files changed, 73 insertions, 0 deletions
diff --git a/test/files/run/t8803.check b/test/files/run/t8803.check
new file mode 100644
index 0000000000..bd26a0fb14
--- /dev/null
+++ b/test/files/run/t8803.check
@@ -0,0 +1,16 @@
+a
+b
+b
+c
+a
+b
+b
+c
+a
+b
+b
+c
+a
+b
+b
+c
diff --git a/test/files/run/t8803.scala b/test/files/run/t8803.scala
new file mode 100644
index 0000000000..2e56180502
--- /dev/null
+++ b/test/files/run/t8803.scala
@@ -0,0 +1,57 @@
+class A {
+ def m = "a"
+ protected def n = "a"
+}
+
+trait B {
+ def m = "b"
+ protected def n = "b"
+}
+
+class C extends A with B {
+ override def m = "c"
+ override protected def n = "c"
+
+ val f1 = () => super[A].m
+ val f2 = () => super[B].m
+ val f3 = () => super.m
+ val f4 = () => this.m
+
+ val g1 = new runtime.AbstractFunction0[String] { def apply() = C.super[A].m }
+ val g2 = new runtime.AbstractFunction0[String] { def apply() = C.super[B].m }
+ val g3 = new runtime.AbstractFunction0[String] { def apply() = C.super.m }
+ val g4 = new runtime.AbstractFunction0[String] { def apply() = C.this.m }
+
+ val h1 = () => super[A].n
+ val h2 = () => super[B].n
+ val h3 = () => super.n
+ val h4 = () => this.n
+
+ val i1 = new runtime.AbstractFunction0[String] { def apply() = C.super[A].n }
+ val i2 = new runtime.AbstractFunction0[String] { def apply() = C.super[B].n }
+ val i3 = new runtime.AbstractFunction0[String] { def apply() = C.super.n }
+ val i4 = new runtime.AbstractFunction0[String] { def apply() = C.this.n }
+}
+
+object Test extends App {
+ val c = new C
+ println(c.f1())
+ println(c.f2())
+ println(c.f3())
+ println(c.f4())
+
+ println(c.g1())
+ println(c.g2())
+ println(c.g3())
+ println(c.g4())
+
+ println(c.h1())
+ println(c.h2())
+ println(c.h3())
+ println(c.h4())
+
+ println(c.i1())
+ println(c.i2())
+ println(c.i3())
+ println(c.i4())
+}