Files
kotlin/compiler/testData/codegen/box/closures/captureInSuperConstructorCall/outerCapturedInObject2.kt
pyos 82ccf81da8 Fix this remapping in inner class constructors
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.)
2019-03-19 09:20:41 +01:00

21 lines
375 B
Kotlin
Vendored

interface Callback {
fun invoke(): String
}
open class Base(val callback: Callback)
class Outer {
val ok = "OK"
inner class Inner1 {
inner class Inner2 : Base(
object : Callback {
override fun invoke() = ok
}
)
}
}
fun box(): String =
Outer().Inner1().Inner2().callback.invoke()