c62093f54c
1. Use 'x' for each parameter, which is not an inline class, every possible clash is handled by signature rather than name. This change makes more API changes binary-compatible. So, the changes are in line with the vision of inline classes are value classes, like primitives. 2. Take return type into account when mangling a function if the return type is inline class. Otherwise, boxing bridge will not be generated, which leads to CCE at runtime.
24 lines
464 B
Kotlin
Vendored
24 lines
464 B
Kotlin
Vendored
// IGNORE_BACKEND_FIR: JVM_IR
|
|
// LANGUAGE: +InlineClasses
|
|
import kotlin.reflect.KProperty
|
|
|
|
inline class I(val x: Int)
|
|
|
|
interface A {
|
|
val i: I
|
|
}
|
|
|
|
class Delegate {
|
|
operator fun getValue(thisRef: Any?, prop: KProperty<*>): I {
|
|
return I(1)
|
|
}
|
|
}
|
|
|
|
class B : A {
|
|
override val i by Delegate()
|
|
}
|
|
|
|
// 1 public final getValue-Y6jMyTM\(Ljava/lang/Object;Lkotlin/reflect/KProperty;\)I
|
|
// 1 public getI-lPtA-2M\(\)I
|
|
// 1 public abstract getI-lPtA-2M\(\)I
|