| open class A { | |
| internal open val field = "AF" | |
| internal open fun test(): String = "AM" | |
| } | |
| fun invokeOnA(a: A) = a.test() + a.field | |
| class Z : A() { | |
| override val field: String = "ZF" | |
| override fun test(): String = "ZM" | |
| } | |
| fun box() : String { | |
| var invokeOnA = invokeOnA(A()) | |
| if (invokeOnA != "AMAF") return "fail 1: $invokeOnA" | |
| invokeOnA = invokeOnA(Z()) | |
| if (invokeOnA != "ZMZF") return "fail 2: $invokeOnA" | |
| val z = Z().test() | |
| if (z != "ZM") return "fail 3: $z" | |
| val f = Z().field | |
| if (f != "ZF") return "fail 4: $f" | |
| return "OK" | |
| } |