Files
kotlin-fork/compiler/testData/codegen/boxInline/trait/trait.kt
T
Mark Punzalan 1abdf0561a Generate synthetic functions for local functions with default values, by
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.
2019-07-01 13:24:08 +02:00

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"
}