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.
27 lines
824 B
Kotlin
Vendored
27 lines
824 B
Kotlin
Vendored
inline class SomeClass(val v: Int) {
|
|
companion object {
|
|
fun <T> comp(s: SomeClass, t: T): T? = null
|
|
}
|
|
|
|
fun <T> getT(): T? = null
|
|
|
|
fun <T, K> getTK(t: T): K? = null
|
|
|
|
val <K> K.propK: K? get() = null
|
|
}
|
|
|
|
// method: SomeClass::getT-impl
|
|
// jvm signature: (I)Ljava/lang/Object;
|
|
// generic signature: <T:Ljava/lang/Object;>(I)TT;
|
|
|
|
// method: SomeClass::getTK-impl
|
|
// jvm signature: (ILjava/lang/Object;)Ljava/lang/Object;
|
|
// generic signature: <T:Ljava/lang/Object;K:Ljava/lang/Object;>(ITT;)TK;
|
|
|
|
// method: SomeClass::getPropK-impl
|
|
// jvm signature: (ILjava/lang/Object;)Ljava/lang/Object;
|
|
// generic signature: <K:Ljava/lang/Object;>(ITK;)TK;
|
|
|
|
// method: SomeClass$Companion::comp-aew-wRw
|
|
// jvm signature: (ILjava/lang/Object;)Ljava/lang/Object;
|
|
// generic signature: <T:Ljava/lang/Object;>(ITT;)TT; |