// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM // IGNORE_BACKEND: JVM_IR // expected: rv: // This example shows a bug in the old BE // original issue - KT-49443, this is the reduced example of it. // Here the old BE manages to compile the script, because it assumes incorrect constructor of the DefaultEachEntryConfiguration class // on generating code for buildZip. // The original example from the issue works supposedly because the constructor is not called on the runtime. // In this example, uncommenting call to buildZip leads to the runtime exception, while uncommenting the call to copy or // moving DefaultEachEntryConfiguration class definition before ZipHelper breaks codegeneration (somewhat expectedly). // The JVM IR BE now generates correct error about invalid script instance capturing. interface I { fun rename() } object ZipHelper { fun buildZip() { DefaultEachEntryConfiguration(0).rename() // 0.copy() } } class DefaultEachEntryConfiguration(val entry: Int) : I { override fun rename() { entry.copy() } } fun Int.copy() = Unit //ZipHelper.buildZip()