blob: 99baa9eff9203aa1c397ab53ae3485a445fe5c53 [file]
// WITH_STDLIB
// WORKS_WHEN_VALUE_CLASS
// NO_CHECK_LAMBDA_INLINING
// FILE: lib.kt
inline fun <R> inlinedRun(block: () -> R): R = block()
// FILE: main.kt
OPTIONAL_JVM_INLINE_ANNOTATION
value class Name(private val value: String) {
fun asValue(): String = value
}
fun concat(a: Name, b: Name) = a.asValue() + b.asValue()
OPTIONAL_JVM_INLINE_ANNOTATION
value class UInt(private val value: Int) {
fun asValue(): Int = value
}
fun box(): String {
val o = inlinedRun {
Name("O")
}
val k = notInlinedRun {
Name("K")
}
if (concat(o, k) != "OK") return "fail 1"
val a = UInt(1)
val one = inlinedRun {
a
}
if (one.asValue() != 1) return "fail 2"
val b = UInt(2)
val two = notInlinedRun {
b
}
if (two.asValue() != 2) return "fail 3"
return "OK"
}
fun <R> notInlinedRun(block: () -> R): R = block()