blob: 117e759286c050cb0b667c604ae221eea6f6353e [file]
// IGNORE_INLINER: IR
// TARGET_PLATFORM: JVM
// WITH_STDLIB
// FILE: test.kt
inline fun <R> analyze(action: () -> R): R {
try {
return action()
} finally {
println("End")
}
}
private fun callSite(a: Int, b: Int) {
analyze {
foo(a) ?: return // <-- non-local return, copy of finally-block is inlined here
println("$a $b")
42
}
}
fun foo(a: Int): Int? = if (a == 1) 42 else null
fun box() {
callSite(1, 2)
callSite(2, 2)
}
// EXPECTATIONS JVM_IR
// test.kt:27 box:
// test.kt:17 callSite: a:int=1:int, b:int=2:int
// test.kt:8 callSite: a:int=1:int, b:int=2:int, $i$f$analyze:int=0:int
// test.kt:9 callSite: a:int=1:int, b:int=2:int, $i$f$analyze:int=0:int
// test.kt:18 callSite: a:int=1:int, b:int=2:int, $i$f$analyze:int=0:int, $i$a$-analyze-TestKt$callSite$1:int=0:int
// test.kt:24 foo: a:int=1:int
// test.kt:18 callSite: a:int=1:int, b:int=2:int, $i$f$analyze:int=0:int, $i$a$-analyze-TestKt$callSite$1:int=0:int
// test.kt:19 callSite: a:int=1:int, b:int=2:int, $i$f$analyze:int=0:int, $i$a$-analyze-TestKt$callSite$1:int=0:int
// test.kt:20 callSite: a:int=1:int, b:int=2:int, $i$f$analyze:int=0:int, $i$a$-analyze-TestKt$callSite$1:int=0:int
// test.kt:9 callSite: a:int=1:int, b:int=2:int, $i$f$analyze:int=0:int
// test.kt:11 callSite: a:int=1:int, b:int=2:int, $i$f$analyze:int=0:int
// test.kt:9 callSite: a:int=1:int, b:int=2:int, $i$f$analyze:int=0:int
// test.kt:22 callSite: a:int=1:int, b:int=2:int
// test.kt:28 box:
// test.kt:17 callSite: a:int=2:int, b:int=2:int
// test.kt:8 callSite: a:int=2:int, b:int=2:int, $i$f$analyze:int=0:int
// test.kt:9 callSite: a:int=2:int, b:int=2:int, $i$f$analyze:int=0:int
// test.kt:18 callSite: a:int=2:int, b:int=2:int, $i$f$analyze:int=0:int, $i$a$-analyze-TestKt$callSite$1:int=0:int
// test.kt:24 foo: a:int=2:int
// test.kt:18 callSite: a:int=2:int, b:int=2:int, $i$f$analyze:int=0:int, $i$a$-analyze-TestKt$callSite$1:int=0:int
// test.kt:11 callSite: a:int=2:int, b:int=2:int, $i$f$analyze:int=0:int
// test.kt:29 box:
// EXPECTATIONS JVM_IR +USE_INLINE_SCOPES_NUMBERS
// test.kt:27 box:
// test.kt:17 callSite: a:int=1:int, b:int=2:int
// test.kt:8 callSite: a:int=1:int, b:int=2:int, $i$f$analyze\1\17:int=0:int
// test.kt:9 callSite: a:int=1:int, b:int=2:int, $i$f$analyze\1\17:int=0:int
// test.kt:18 callSite: a:int=1:int, b:int=2:int, $i$f$analyze\1\17:int=0:int, $i$a$-analyze-TestKt$callSite$1\2\81\0:int=0:int
// test.kt:24 foo: a:int=1:int
// test.kt:18 callSite: a:int=1:int, b:int=2:int, $i$f$analyze\1\17:int=0:int, $i$a$-analyze-TestKt$callSite$1\2\81\0:int=0:int
// test.kt:19 callSite: a:int=1:int, b:int=2:int, $i$f$analyze\1\17:int=0:int, $i$a$-analyze-TestKt$callSite$1\2\81\0:int=0:int
// test.kt:20 callSite: a:int=1:int, b:int=2:int, $i$f$analyze\1\17:int=0:int, $i$a$-analyze-TestKt$callSite$1\2\81\0:int=0:int
// test.kt:9 callSite: a:int=1:int, b:int=2:int, $i$f$analyze\1\17:int=0:int
// test.kt:11 callSite: a:int=1:int, b:int=2:int, $i$f$analyze\1\17:int=0:int
// test.kt:9 callSite: a:int=1:int, b:int=2:int, $i$f$analyze\1\17:int=0:int
// test.kt:22 callSite: a:int=1:int, b:int=2:int
// test.kt:28 box:
// test.kt:17 callSite: a:int=2:int, b:int=2:int
// test.kt:8 callSite: a:int=2:int, b:int=2:int, $i$f$analyze\1\17:int=0:int
// test.kt:9 callSite: a:int=2:int, b:int=2:int, $i$f$analyze\1\17:int=0:int
// test.kt:18 callSite: a:int=2:int, b:int=2:int, $i$f$analyze\1\17:int=0:int, $i$a$-analyze-TestKt$callSite$1\2\81\0:int=0:int
// test.kt:24 foo: a:int=2:int
// test.kt:18 callSite: a:int=2:int, b:int=2:int, $i$f$analyze\1\17:int=0:int, $i$a$-analyze-TestKt$callSite$1\2\81\0:int=0:int
// test.kt:11 callSite: a:int=2:int, b:int=2:int, $i$f$analyze\1\17:int=0:int
// test.kt:29 box: