summaryrefslogtreecommitdiff
path: root/test-nsc/files/run/mixins.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-10-05 11:08:17 +0000
committerMartin Odersky <odersky@gmail.com>2005-10-05 11:08:17 +0000
commit0a6b2c44cbdcea9e9c248b6a5b9970ad4cd86001 (patch)
treec008a12ea7e928b3f34e0c345c84832d90c1c8ad /test-nsc/files/run/mixins.scala
parent041a971eb7f89d2976bee5512a6caf7de7bff27c (diff)
downloadscala-0a6b2c44cbdcea9e9c248b6a5b9970ad4cd86001.tar.gz
scala-0a6b2c44cbdcea9e9c248b6a5b9970ad4cd86001.tar.bz2
scala-0a6b2c44cbdcea9e9c248b6a5b9970ad4cd86001.zip
*** empty log message ***
Diffstat (limited to 'test-nsc/files/run/mixins.scala')
-rwxr-xr-xtest-nsc/files/run/mixins.scala94
1 files changed, 94 insertions, 0 deletions
diff --git a/test-nsc/files/run/mixins.scala b/test-nsc/files/run/mixins.scala
new file mode 100755
index 0000000000..f896551108
--- /dev/null
+++ b/test-nsc/files/run/mixins.scala
@@ -0,0 +1,94 @@
+// $Id$
+
+// Test 1: "super" coming from mixins
+
+object Test1 {
+ class A {
+ def f = "A::f";
+ }
+
+ class B extends A {
+ override def f = "B::f";
+ }
+
+ trait M1 extends A {
+ override def f = "M1::" + super.f;
+ }
+
+ class C extends B with M1 {
+ override def f = super[M1].f;
+ }
+
+ def test(): Unit = {
+ val c = new C;
+ Console.println(c.f);
+ }
+}
+
+// Test 2: qualified "super" inside of the host class
+
+object Test2 {
+ class M1 {
+ def f = "M1::f";
+ }
+
+ trait M2 {
+ def f = "M2::f";
+ }
+
+ trait M3 {
+ def f = "M3::f";
+ }
+
+ class Host extends M1 with M2 with M3 {
+ override def f = super[M1].f + " " + super[M2].f + " " + super[M3].f
+ }
+
+ def test(): Unit = {
+ val h = new Host;
+ Console.println(h.f)
+ }
+}
+
+// Test 3: mixin evaluation order (bug 120)
+
+object Test3 {
+
+ class A(x: Unit, y: Unit) {
+ Console.println("A");
+ }
+
+<<<<<<< mixins.scala
+ trait B {
+ println("B");
+=======
+ class B(x: Unit) {
+ Console.println("B");
+>>>>>>> 1.5
+ }
+
+<<<<<<< mixins.scala
+ class C extends A({ println("one"); }, { println("two"); })
+ with B {
+ println("C");
+=======
+ class C with A({ Console.println("one"); }, { Console.println("two"); })
+ with B({ Console.println("three"); }) {
+ Console.println("C");
+>>>>>>> 1.5
+ }
+
+ def test() = {
+ val c = new C();
+ }
+}
+
+// Main testing function
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ Test1.test();
+ Test2.test();
+ Test3.test();
+ }
+}