b5f37d18b2
When two functions with matching JVM signatures in the same package were inlined sequentially, inliner could take a wrong method body from the cache due to MethodId clash. This manifested with inline classes, but also was possible with some legal Kotlin overloads with matching erasure. Use internal name of the corresponding implementation owner class instead of FQN of the containing declaration. Such MethodIds can't match accidentally, because corresponding JVM method signatures would clash.
8 lines
197 B
Kotlin
Vendored
8 lines
197 B
Kotlin
Vendored
import lib.*
|
|
|
|
fun run() {
|
|
val test1 = 42.toString(10)
|
|
val test2 = J(42).toString(10)
|
|
if (test1 != "42") throw AssertionError(test1)
|
|
if (test2 != "J42") throw AssertionError(test2)
|
|
} |