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:
Alexey Andreev
2016-12-09 13:35:25 +03:00
parent b634c2cbe3
commit 39de1a7659
13 changed files with 51 additions and 55 deletions
-14
View File
@@ -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"
}
+18
View File
@@ -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"
}
+1
View File
@@ -270,6 +270,7 @@
return cache.value;
}
Kotlin.jsTypeOf = function(a) { return typeof a; };
////////////////////////////////// packages & modules //////////////////////////////