mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-08 15:53:19 +00:00
55 lines
1.6 KiB
Kotlin
Vendored
55 lines
1.6 KiB
Kotlin
Vendored
// NO_CHECK_LAMBDA_INLINING
|
|
// FILE: 1.kt
|
|
// WITH_RUNTIME
|
|
// TARGET_BACKEND: NATIVE
|
|
package test
|
|
|
|
open class A(val value: String)
|
|
|
|
var invokeOrder = ""
|
|
|
|
inline fun inlineFun(
|
|
vararg constraints: A,
|
|
receiver: String = { invokeOrder += " default receiver"; "DEFAULT" }(),
|
|
init: String
|
|
): String {
|
|
return constraints.map { it.value }.joinToString() + ", " + receiver + ", " + init
|
|
}
|
|
|
|
// FILE: 2.kt
|
|
import test.*
|
|
|
|
|
|
var result = ""
|
|
fun box(): String {
|
|
|
|
result = ""
|
|
invokeOrder = ""
|
|
result = inlineFun(constraints = { invokeOrder += "constraints";A("C") }(),
|
|
receiver = { invokeOrder += " receiver"; "R" }(),
|
|
init = { invokeOrder += " init"; "I" }())
|
|
if (result != "C, R, I") return "fail 1: $result"
|
|
|
|
if (invokeOrder != "constraints receiver init") return "fail 2: $invokeOrder"
|
|
|
|
result = ""
|
|
invokeOrder = ""
|
|
result = inlineFun(init = { invokeOrder += "init"; "I" }(),
|
|
constraints = { invokeOrder += "constraints";A("C") }(),
|
|
receiver = { invokeOrder += " receiver"; "R" }()
|
|
)
|
|
if (result != "C, R, I") return "fail 3: $result"
|
|
//Change test after KT-17691 FIX
|
|
if (invokeOrder != "init receiverconstraints") return "fail 4: $invokeOrder"
|
|
|
|
result = ""
|
|
invokeOrder = ""
|
|
result = inlineFun(init = { invokeOrder += "init"; "I" }(),
|
|
constraints = { invokeOrder += " constraints";A("C") }())
|
|
if (result != "C, DEFAULT, I") return "fail 5: $result"
|
|
if (invokeOrder != "init constraints default receiver") return "fail 6: $invokeOrder"
|
|
|
|
return "OK"
|
|
}
|
|
|