From 0a6b2c44cbdcea9e9c248b6a5b9970ad4cd86001 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Wed, 5 Oct 2005 11:08:17 +0000 Subject: *** empty log message *** --- test-nsc/files/run/mixins.scala | 94 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100755 test-nsc/files/run/mixins.scala (limited to 'test-nsc/files/run/mixins.scala') 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(); + } +} -- cgit v1.2.3