mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-17 00:21:28 +00:00
1. Postpone the computation of the signature for property reference getters for extension properties until codegen time. 2. Generate metadata for static replacement functions instead of the original functions.
83 lines
2.2 KiB
Kotlin
Vendored
83 lines
2.2 KiB
Kotlin
Vendored
// IGNORE_BACKEND_FIR: JVM_IR
|
|
// IGNORE_BACKEND: JS_IR, JS, NATIVE
|
|
// WITH_REFLECT
|
|
import kotlin.test.assertEquals
|
|
|
|
var global = S("")
|
|
|
|
inline class Z(val x: Int) {
|
|
var test: S
|
|
get() = S("${global.x}$x")
|
|
set(value) {
|
|
global = S("${value.x}$x")
|
|
}
|
|
}
|
|
|
|
inline class L(val x: Long) {
|
|
var test: S
|
|
get() = S("${global.x}$x")
|
|
set(value) {
|
|
global = S("${value.x}$x")
|
|
}
|
|
}
|
|
|
|
inline class S(val x: String) {
|
|
var test: S
|
|
get() = S("${global.x}$x")
|
|
set(value) {
|
|
global = S("${value.x}$x")
|
|
}
|
|
}
|
|
|
|
inline class A(val x: Any) {
|
|
var test: S
|
|
get() = S("${global.x}$x")
|
|
set(value) {
|
|
global = S("${value.x}$x")
|
|
}
|
|
}
|
|
|
|
fun box(): String {
|
|
global = S("")
|
|
assertEquals(S("42"), Z::test.call(Z(42)))
|
|
assertEquals(S("42"), Z(42)::test.call())
|
|
assertEquals(S("42"), Z::test.getter.call(Z(42)))
|
|
assertEquals(S("42"), Z(42)::test.getter.call())
|
|
Z::test.setter.call(Z(42), S("Z-"))
|
|
assertEquals(S("Z-42"), global)
|
|
Z(42)::test.setter.call(S("Z+"))
|
|
assertEquals(S("Z+42"), global)
|
|
|
|
global = S("")
|
|
assertEquals(S("42"), L::test.call(L(42L)))
|
|
assertEquals(S("42"), L(42L)::test.call())
|
|
assertEquals(S("42"), L::test.getter.call(L(42L)))
|
|
assertEquals(S("42"), L(42L)::test.getter.call())
|
|
L::test.setter.call(L(42L), S("L-"))
|
|
assertEquals(S("L-42"), global)
|
|
L(42L)::test.setter.call(S("L+"))
|
|
assertEquals(S("L+42"), global)
|
|
|
|
global = S("")
|
|
assertEquals(S("42"), S::test.call(S("42")))
|
|
assertEquals(S("42"), S("42")::test.call())
|
|
assertEquals(S("42"), S::test.getter.call(S("42")))
|
|
assertEquals(S("42"), S("42")::test.getter.call())
|
|
S::test.setter.call(S("42"), S("S-"))
|
|
assertEquals(S("S-42"), global)
|
|
S("42")::test.setter.call(S("S+"))
|
|
assertEquals(S("S+42"), global)
|
|
|
|
global = S("")
|
|
assertEquals(S("42"), A::test.call(A(42)))
|
|
assertEquals(S("42"), A(42)::test.call())
|
|
assertEquals(S("42"), A::test.getter.call(A(42)))
|
|
assertEquals(S("42"), A(42)::test.getter.call())
|
|
A::test.setter.call(A(42), S("A-"))
|
|
assertEquals(S("A-42"), global)
|
|
A(42)::test.setter.call(S("A+"))
|
|
assertEquals(S("A+42"), global)
|
|
|
|
return "OK"
|
|
}
|