Files
kotlin-fork/compiler/testData/codegen/box/jvmName/multifileClassWithLocalGeneric.kt
T
Mikhail Glukhikh 20c4a7b244 [FIR2IR] Introduce staged transformation (first step)
Now FE IR -> BE IR transformation is performed in multiple stages
controller by Fir2IrConverter. Stages are
 * files & classes registration
 * supertypes & type parameters handling
 * functions & properties signature generation
 * body generation

After each step we have guarantee (with exception of local classes &
type inference combination, and external symbols) that required symbols
(class/function/property/variable/type parameter)
are already bound to real declarations and have correct parents.

This commit also fixes incorrect parents for local classes
2020-03-13 12:18:02 +03:00

21 lines
495 B
Kotlin
Vendored

// TARGET_BACKEND: JVM
// WITH_RUNTIME
@file:JvmName("Test")
@file:JvmMultifileClass
package test
fun foo(): String = bar()
fun bar(): String {
open class LocalGeneric<T>(val x: T)
class Derived(x: String) : LocalGeneric<String>(x)
fun <T> LocalGeneric<T>.extFun() = this
fun <T> localFun(x: LocalGeneric<T>) = x
class Local3 {
fun <T> method(x: LocalGeneric<T>) = x.x
}
return Local3().method(localFun(Derived("OK")).extFun())
}
fun box(): String = foo()