82ccf81da8
Inner class constructors should use the argument instead of reading outer `this` from a field because if such an access happens before a delegating constructor call, e.g. when evaluating an argument, a JVM bytecode validation error will be thrown. (The only operation on `this` allowed before a delegating constructor call is SETFIELD, and only if the field in question is declared in the same class.)
17 lines
266 B
Kotlin
Vendored
17 lines
266 B
Kotlin
Vendored
class Outer() {
|
|
val s = "xyzzy"
|
|
|
|
open inner class InnerBase(public val name: String) {
|
|
}
|
|
|
|
inner class InnerDerived(): InnerBase(s) {
|
|
}
|
|
|
|
val x = InnerDerived()
|
|
}
|
|
|
|
fun box() : String {
|
|
val o = Outer()
|
|
return if (o.x.name != "xyzzy") "fail" else "OK"
|
|
}
|