blob: c4e231d4b089797ad221ae89a387a64712f4db72 [file]
// ISSUE: KT-69497
// IGNORE_BACKEND: JVM_IR
// ^^^ KT-75642
// NO_COMMON_FILES
// DUMP_IR
// DUMP_IR_AFTER_INLINE
// DUMP_IR_OF_PREPROCESSED_INLINE_FUNCTIONS
class Pair<T>(val first: T, val second: T)
var globalCounter = 0
inline fun <T> runTwice(f: () -> T) = Pair(f(), f())
inline fun bar(crossinline test: () -> Int): Int {
var outsideCounter = 0
val x = runTwice {
var insideCounter = 0
val r = object {
fun count() {
globalCounter++
outsideCounter++
insideCounter++
}
fun foo() = test()
}
r.count()
outsideCounter += insideCounter
r
}
globalCounter += outsideCounter
return x.first.foo() + x.second.foo()
}
fun box(): String {
val result = bar { 5 }
if (result != 5 + 5) return "result = $result"
if (globalCounter != 6) return "globalCounter = $globalCounter"
return "OK"
}