From 0dfc7afb291c3971598dee0c58b1b0a2237c625f Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Sun, 15 May 2011 01:29:01 +0400 Subject: [PATCH] More delegation tests --- .../codegen/classes/diamondInheritance.jet | 22 +++++++++++++++++++ .../codegen/classes/rightHandOverride.jet | 18 +++++++++++++++ .../jetbrains/jet/codegen/ClassGenTest.java | 8 +++++++ 3 files changed, 48 insertions(+) create mode 100644 idea/testData/codegen/classes/diamondInheritance.jet create mode 100644 idea/testData/codegen/classes/rightHandOverride.jet diff --git a/idea/testData/codegen/classes/diamondInheritance.jet b/idea/testData/codegen/classes/diamondInheritance.jet new file mode 100644 index 00000000000..8266ca75d38 --- /dev/null +++ b/idea/testData/codegen/classes/diamondInheritance.jet @@ -0,0 +1,22 @@ +class Base() { + public var v : Int +} + +class Left() : Base() {} +class Right() : Base() {} + +class D() : Left(), Right() + +fun vl(l : Left) : Int = l.v +fun vr(r : Right) : Int = r.v + +fun box() : String { + val d = new D() + d.v = 42 + + if (d.v != 42) return "Fail #1" + if (vl(d) != 42) return "Fail #2" + if (vr(d) != 42) return "Fail #3" + + return "OK" +} \ No newline at end of file diff --git a/idea/testData/codegen/classes/rightHandOverride.jet b/idea/testData/codegen/classes/rightHandOverride.jet new file mode 100644 index 00000000000..8f5562442fa --- /dev/null +++ b/idea/testData/codegen/classes/rightHandOverride.jet @@ -0,0 +1,18 @@ +class Left() {} +class Right() { + virtual fun f() = 42 +} + +class D() : Left(), Right() { + override fun f() = 239 +} + +fun box() : String { + val r : Right = new Right() + val d : D = new D() + + if (r.f() != 42) return "Fail #1" + if (d.f() != 239) return "Fail #2" + + return "OK" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/codegen/ClassGenTest.java b/idea/tests/org/jetbrains/jet/codegen/ClassGenTest.java index cd1a4d03095..e856c5e7ea0 100644 --- a/idea/tests/org/jetbrains/jet/codegen/ClassGenTest.java +++ b/idea/tests/org/jetbrains/jet/codegen/ClassGenTest.java @@ -36,6 +36,14 @@ public class ClassGenTest extends CodegenTestCase { blackBoxFile("classes/propertyDelegation.jet"); } + public void testDiamondInheritance() throws Exception { + blackBoxFile("classes/diamondInheritance.jet"); + } + + public void testRightHandOverride() throws Exception { + blackBoxFile("classes/rightHandOverride.jet"); + } + private static void checkInterface(Class aClass, Class ifs) { for (Class anInterface : aClass.getInterfaces()) { if (anInterface == ifs) return;