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.)
18 lines
336 B
Kotlin
Vendored
18 lines
336 B
Kotlin
Vendored
open class Father(val param: String) {
|
|
abstract inner class InClass {
|
|
fun work(): String {
|
|
return param
|
|
}
|
|
}
|
|
|
|
inner class Child(p: String) : Father(p) {
|
|
inner class Child2 : Father.InClass() {
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
fun box(): String {
|
|
return Father("fail").Child("OK").Child2().work()
|
|
}
|