Files
kotlin-fork/compiler/testData/codegen/box/secondaryConstructors/fieldInitializerOptimization_inlineClass.kt
T
Ilya Chernikov 5b3816cce5 Test infra: refactor IGNORE_BACKEND directive
treat it as a general one, introduce *_K1 and *_K2 variants for
more specific ignoring
2022-11-12 16:28:23 +01:00

36 lines
821 B
Kotlin
Vendored

// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: IGNORED_IN_JS
// IGNORE_BACKEND: NATIVE
// IGNORE_BACKEND: JS
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
// IGNORE_BACKEND: JVM
// IGNORE_BACKEND: JVM_IR
// FIR status: not supported in JVM
open class Base {
open fun setup() {}
init { setup() }
}
inline class Z(val y: Int)
class Derived : Base {
constructor() : super()
override fun setup() {
x = Z(1)
}
// Technically, this field initializer comes after the superclass
// constructor is called. However, we optimize away field initializers
// which set fields to their default value, which is why x ends up with
// value 1 after the constructor call.
var x = Z(0)
}
fun box(): String {
val d = Derived()
if (d.x.y != 1) return "fail"
return "OK"
}