diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/files/run/mixins.check | 2 | ||||
-rw-r--r-- | test/files/run/mixins.scala | 59 |
2 files changed, 61 insertions, 0 deletions
diff --git a/test/files/run/mixins.check b/test/files/run/mixins.check new file mode 100644 index 0000000000..18a1510925 --- /dev/null +++ b/test/files/run/mixins.check @@ -0,0 +1,2 @@ +M1::B::f +M1::f M2::f M3::f diff --git a/test/files/run/mixins.scala b/test/files/run/mixins.scala new file mode 100644 index 0000000000..0b1a43d6b4 --- /dev/null +++ b/test/files/run/mixins.scala @@ -0,0 +1,59 @@ +// $Id$ + +// Test 1: "super" coming from mixins + +object Test1 { + class A { + def f = "A::f"; + } + + class B extends A { + override def f = "B::f"; + } + + class M1 extends A { + override def f = "M1::" + super.f; + } + + class C extends B with M1 { + } + + def main(args: Array[String]): Unit = { + val c = new C; + System.out.println(c.f); + } +} + +// Test 2: qualified "super" inside of the host class + +object Test2 { + class M1 { + def f = "M1::f"; + } + + class M2 { + def f = "M2::f"; + } + + class M3 { + def f = "M3::f"; + } + + class Host with M1 with M2 with M3 { + override def f = super[M1].f + " " + super[M2].f + " " + super[M3].f + } + + def main(args: Array[String]): Unit = { + val h = new Host; + System.out.println(h.f) + } +} + +// Main testing function + +object Test { + def main(args: Array[String]): Unit = { + Test1.main(args); + Test2.main(args); + } +} |