blob: 264d2ffbdfcebe72abb2e559b63df1aaa7d64e26 [file] [log] [blame]
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
// FILE: J.java
public class J extends A {
public boolean okField = false;
public int getValProp() {
return 123;
}
public int getVarProp() {
return 456;
}
public void setVarProp(int x) {
okField = true;
}
public int isProp() {
return 789;
}
public void setProp(int x) {
okField = true;
}
}
// FILE: test.kt
open class A {
open val valProp: Int = -1
open var varProp: Int = -1
open var isProp: Int = -1
}
class B : J() {
override val valProp: Int = super.valProp + 1
override var varProp: Int
set(value) {
super.varProp = value
}
get() = super.varProp + 1
override var isProp: Int
set(value) {
super.isProp = value
}
get() = super.isProp + 1
}
fun box(): String {
val j = J()
var a: A = j
if (j.valProp != 123) return "fail 1"
if (a.valProp != 123) return "fail 2"
j.varProp = -1
if (!j.okField) return "fail 3"
j.okField = false
a.varProp = -1
if (!j.okField) return "fail 4"
j.okField = false
if (j.varProp != 456) return "fail 5"
if (a.varProp != 456) return "fail 6"
j.isProp = -1
if (!j.okField) return "fail 7"
j.okField = false
a.isProp = -1
if (!j.okField) return "fail 8"
j.okField = false
if (j.isProp != 789) return "fail 9"
if (a.isProp != 789) return "fail 10"
val b = B()
a = b
if (b.valProp != 124) return "fail 11"
if (a.valProp != 124) return "fail 12"
b.varProp = -1
if (!b.okField) return "fail 13"
b.okField = false
a.varProp = -1
if (!b.okField) return "fail 14"
b.okField = false
if (b.varProp != 457) return "fail 15"
if (a.varProp != 457) return "fail 16"
b.isProp = -1
if (!b.okField) return "fail 17"
b.okField = false
a.isProp = -1
if (!b.okField) return "fail 18"
b.okField = false
if (b.isProp != 790) return "fail 19"
if (a.isProp != 790) return "fail 20"
return "OK"
}