2f0f4e570f
The only case where this code is reachable at all is objects in lambdas that use reified type parameters of the outer inline function. Since the type parameters are declared outside the inlining root, regenerating the object is actually pointless, and remapping its captures even more so (not to mention that the code under the condition uses the captures of the lambda, not of the method it's currently transforming).
20 lines
628 B
Kotlin
Vendored
20 lines
628 B
Kotlin
Vendored
// FILE: 1.kt
|
|
package test
|
|
|
|
inline fun <R> myRun(g: () -> R) = g()
|
|
|
|
// FILE: 2.kt
|
|
import test.*
|
|
|
|
inline fun <reified A> Any?.complicatedCast() =
|
|
myRun { // 1. Inline function call with a lambda
|
|
object { // 2. Anonymous object inside a lambda
|
|
fun f(x: Any?): A { // 3. Anonymous object uses a reified type parameter
|
|
val y = x // 4. A method in that object uses locals
|
|
return y as A
|
|
}
|
|
}.f(this) // 5. The lambda captures more values than the object
|
|
}
|
|
|
|
fun box() = "OK".complicatedCast<String>()
|