Files
kotlin-fork/js/js.translator/testData/box/inline/localInlineFunction.kt
T
2022-04-11 10:37:21 +00:00

53 lines
1.3 KiB
Kotlin
Vendored

// EXPECTED_REACHABLE_NODES: 1284
package foo
// CHECK_CONTAINS_NO_CALLS: localWithCapture except=Unit_getInstance
// CHECK_CONTAINS_NO_CALLS: localWithoutCapture
internal inline fun repeatAction(times: Int, action: () -> Unit) {
for (i in 1..times) {
action()
}
}
// CHECK_BREAKS_COUNT: function=localWithoutCapture count=0 TARGET_BACKENDS=JS_IR
// CHECK_LABELS_COUNT: function=localWithoutCapture name=$l$block count=0 TARGET_BACKENDS=JS_IR
internal fun localWithoutCapture(a: Int, b: Int): Int {
var sum = 0
inline fun inc(x: Int): Int {
return x + 1
}
repeatAction(a + b) {
sum = inc(sum)
}
return sum
}
// CHECK_BREAKS_COUNT: function=localWithCapture count=0 TARGET_BACKENDS=JS_IR
// CHECK_LABELS_COUNT: function=localWithCapture name=$l$block count=0 TARGET_BACKENDS=JS_IR
internal fun localWithCapture(a: Int, b: Int): Int {
var sum = 0
inline fun inc() {
sum++
}
repeatAction(a + b) {
inc()
}
return sum
}
fun box(): String {
assertEquals(3, localWithoutCapture(1, 2), "localWithoutCapture")
assertEquals(9, localWithoutCapture(4, 5), "localWithoutCapture")
assertEquals(3, localWithCapture(1, 2), "localWithCapture")
assertEquals(9, localWithCapture(4, 5), "localWithCapture")
return "OK"
}