// !CHECK_TYPE interface A { val x: Int val z: Comparable<*> } open class B { open var y = "" open val z: CharSequence = "" } class C : B(), A { override val x get() = 1 override var y get() = super.y set(value) { value checkType { _() } } override var z get() = "" set(value) { value checkType { _() } } } fun foo(c: C) { c.x checkType { _() } c.y checkType { _() } c.z checkType { _() } c.y = "" c.y = 1 c.z = "" c.z = 1 }