Merge remote branch 'origin/master'

This commit is contained in:
Andrey Breslav
2011-05-16 15:05:59 +04:00
8 changed files with 97 additions and 26 deletions
@@ -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"
}
@@ -0,0 +1,8 @@
class Wrapper<T>() {
fun castToSelf(wrapper: Any) = wrapper as? Wrapper<T>
}
fun foo() {
val wrapper = new Wrapper<Int>()
return wrapper.castToSelf(new Wrapper<String>())
}