More delegation tests
This commit is contained in:
@@ -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"
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -36,6 +36,14 @@ public class ClassGenTest extends CodegenTestCase {
|
|||||||
blackBoxFile("classes/propertyDelegation.jet");
|
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) {
|
private static void checkInterface(Class aClass, Class ifs) {
|
||||||
for (Class anInterface : aClass.getInterfaces()) {
|
for (Class anInterface : aClass.getInterfaces()) {
|
||||||
if (anInterface == ifs) return;
|
if (anInterface == ifs) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user