1abdf0561a
re-ordering the lowering phases. The changes in InterfaceLowering are necessary so that IrElements that target the removed functions are re-targeted to the new functions in DefaultImpls. This affects local functions in interface functions since now LocalDeclarationsLowering comes before InterfaceLowering.
45 lines
899 B
Kotlin
Vendored
45 lines
899 B
Kotlin
Vendored
// FILE: 1.kt
|
|
|
|
package test
|
|
|
|
interface InlineTrait {
|
|
|
|
private inline fun privateInline(s: () -> String): String {
|
|
return s()
|
|
}
|
|
|
|
fun testPrivateInline(): String {
|
|
return privateInline { "private" }
|
|
}
|
|
|
|
fun testPrivateInline2(): String {
|
|
return privateInline { "private2" }
|
|
}
|
|
|
|
companion object {
|
|
inline final fun finalInline(s: () -> String): String {
|
|
return s()
|
|
}
|
|
}
|
|
}
|
|
|
|
class Z : InlineTrait {
|
|
|
|
}
|
|
|
|
// FILE: 2.kt
|
|
|
|
import test.*
|
|
|
|
fun testClassObject(): String {
|
|
return InlineTrait.finalInline({ "classobject" })
|
|
}
|
|
|
|
fun box(): String {
|
|
if (Z().testPrivateInline() != "private") return "test1: ${Z().testPrivateInline()}"
|
|
if (Z().testPrivateInline2() != "private2") return "test2: ${Z().testPrivateInline2()}"
|
|
if (testClassObject() != "classobject") return "test3: ${testClassObject()}"
|
|
|
|
return "OK"
|
|
}
|