blob: 9486131d082f6ab7f53c17d61d1f5e037e37ef1b [file] [log] [blame]
// !LANGUAGE: +InlineClasses
inline class Name(private val value: String) {
fun asValue(): String = value
}
fun concat(a: Name, b: Name) = a.asValue() + b.asValue()
inline 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"
}
inline fun <R> inlinedRun(block: () -> R): R = block()
fun <R> notInlinedRun(block: () -> R): R = block()