Files
kotlin/compiler/testData/codegen/box/reflection/call/inlineClasses/constructorWithInlineClassParameters.kt
2019-11-19 11:00:09 +03:00

28 lines
749 B
Kotlin
Vendored

// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: JS_IR, JS, NATIVE
// WITH_REFLECT
import kotlin.test.assertEquals
inline class Z(val x: Int)
class Outer(val z1: Z) {
inner class Inner(val z2: Z) {
val test = "$z1 $z2"
}
}
inline class InlineOuter(val z1: Z) {
inner class Inner(val z2: Z) {
val test = "$z1 $z2"
}
}
fun box(): String {
assertEquals(Z(1), ::Outer.call(Z(1)).z1)
assertEquals("Z(x=1) Z(x=2)", Outer::Inner.call(Outer(Z(1)), Z(2)).test)
assertEquals("Z(x=1) Z(x=3)", Outer(Z(1))::Inner.call(Z(3)).test)
assertEquals("Z(x=1) Z(x=2)", InlineOuter::Inner.call(InlineOuter(Z(1)), Z(2)).test)
assertEquals("Z(x=1) Z(x=3)", InlineOuter(Z(1))::Inner.call(Z(3)).test)
return "OK"
}