JS: fix issues with js() usage in inline functions
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
package foo
|
||||
|
||||
// CHECK_CONTAINS_NO_CALLS: test
|
||||
|
||||
inline fun sum(x: Int, y: Int): Int = js("x + y")
|
||||
|
||||
fun test(x: Int, y: Int): Int = sum(sum(x, x), sum(y, y))
|
||||
|
||||
fun box(): String {
|
||||
assertEquals(4, test(1, 1))
|
||||
assertEquals(8, test(1, 3))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package foo
|
||||
|
||||
// CHECK_CONTAINS_NO_CALLS: test
|
||||
|
||||
inline fun sum(x: Int, y: Int): Int = js("var a = x; a + y")
|
||||
|
||||
fun test(x: Int, y: Int): Int {
|
||||
val xx = sum(x, x)
|
||||
js("var a = 0;")
|
||||
val yy = sum(y, y)
|
||||
|
||||
return sum(xx, yy)
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
assertEquals(4, test(1, 1))
|
||||
assertEquals(8, test(1, 3))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package foo
|
||||
|
||||
fun box(): String {
|
||||
var sum = 0
|
||||
var sumInner = 0
|
||||
var sumOuter = 0
|
||||
|
||||
val range = 0..10
|
||||
val skipInner = 5
|
||||
val skipOuter = 8
|
||||
|
||||
|
||||
@block for (i in range) {
|
||||
sum += i
|
||||
|
||||
if (i == skipOuter) break@block
|
||||
|
||||
js("""
|
||||
block: {
|
||||
if (i === skipInner) break block;
|
||||
|
||||
sumInner += i
|
||||
}
|
||||
""")
|
||||
|
||||
sumOuter += i
|
||||
}
|
||||
|
||||
assertEquals(sum - skipOuter, sumOuter, "sumOuter")
|
||||
assertEquals(sum - skipOuter - skipInner, sumInner, "sumInner")
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user