Delegating properties

This commit is contained in:
Maxim Shafirov
2011-05-09 18:56:23 +04:00
parent a8a72a7fc0
commit ec4bda880d
4 changed files with 60 additions and 6 deletions
@@ -0,0 +1,33 @@
class Base() {
public val plain = 239
public val read : Int
get() = 239
public var readwrite : Int
get() = $readwrite + 1
set(n : Int) {
$readwrite = n
}
}
class Abstract {}
class Derived1() : Base(), Abstract {}
class Derived2() : Abstract, Base() {}
fun code(s : Base) : Int {
if (s.plain != 239) return 1
if (s.read != 239) return 2
s.readwrite = 238
if (s.readwrite != 239) return 3
return 0
}
fun test(s : Base) : Boolean = code(s) == 0
fun box() : String {
if (!test(new Base())) return "Fail #1"
if (!test(new Derived1())) return "Fail #2"
if (!test(new Derived2())) return "Fail #3"
return "OK"
}