JS: generate temporary names for function parameters. Remove tests for js() function that references parameters. Remove such usages of js() function from stdlib
This commit is contained in:
-14
@@ -1,14 +0,0 @@
|
||||
package foo
|
||||
|
||||
// CHECK_CONTAINS_NO_CALLS: test
|
||||
|
||||
internal inline fun sum(x: Int, y: Int): Int = js("x + y")
|
||||
|
||||
internal 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"
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package foo
|
||||
|
||||
// CHECK_CONTAINS_NO_CALLS: test
|
||||
|
||||
internal inline fun sum(x: Int, y: Int): Int = js("var a = x; a + y")
|
||||
|
||||
internal 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,9 @@
|
||||
fun f(x: Int) = x * 2
|
||||
|
||||
fun test(f: (Long) -> Long) = Pair(f(23 as Int), f(42L))
|
||||
|
||||
fun box(): String {
|
||||
val result = test { it * 3 }
|
||||
if (result != Pair(46, 126L)) return "fail: $result"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
fun box(): String {
|
||||
var result = jsTypeOf(23)
|
||||
if (result != "number") return "fail1: $result"
|
||||
|
||||
result = jsTypeOf("23")
|
||||
if (result != "string") return "fail2: $result"
|
||||
|
||||
result = jsTypeOf({ x: Int -> x })
|
||||
if (result != "function") return "fail3: $result"
|
||||
|
||||
result = jsTypeOf(object {})
|
||||
if (result != "object") return "fail4: $result"
|
||||
|
||||
result = jsTypeOf(true)
|
||||
if (result != "boolean") return "fail5: $result"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -270,6 +270,7 @@
|
||||
return cache.value;
|
||||
}
|
||||
|
||||
Kotlin.jsTypeOf = function(a) { return typeof a; };
|
||||
|
||||
////////////////////////////////// packages & modules //////////////////////////////
|
||||
|
||||
|
||||
Reference in New Issue
Block a user