[K/JS] Use declared upper-bound types for parameters inside inlined functions body, instead of the provided types
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
// EXPECTED_REACHABLE_NODES: 1288
|
||||
// IGNORE_BACKEND: JS_IR, JS_IR_ES6
|
||||
|
||||
@JsExport
|
||||
interface I {
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
// EXPECTED_REACHABLE_NODES: 1282
|
||||
// IGNORE_BACKEND: JS_IR, JS_IR_ES6
|
||||
|
||||
fun box(): String {
|
||||
val a = 'Q'.foo()
|
||||
if (a != "number") return "fail1: $a"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
// EXPECTED_REACHABLE_NODES: 1289
|
||||
// IGNORE_BACKEND: JS_IR, JS_IR_ES6
|
||||
|
||||
@JsExport
|
||||
open class A {
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
// EXPECTED_REACHABLE_NODES: 1283
|
||||
// IGNORE_BACKEND: JS_IR, JS_IR_ES6
|
||||
|
||||
fun foo(x: Any): String {
|
||||
return when (x) {
|
||||
is Char -> "char: ${x.toInt()}"
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
// WITH_STDLIB
|
||||
|
||||
fun demo(x: dynamic, a: Array<out dynamic>): Boolean? {
|
||||
return a.any { y: Any ->
|
||||
val newX: Any = x.unsafeCast<Any>()
|
||||
y == newX
|
||||
}
|
||||
}
|
||||
|
||||
data class X(val x: Int)
|
||||
|
||||
fun box(): String {
|
||||
|
||||
if (demo(X(1), arrayOf(X(1))) != true) return "fail"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -317,8 +317,7 @@ fun testCompareDifferentInstancesInSmartCast() {
|
||||
fun testCompareDifferentInstncesInInlineTemplate() {
|
||||
inline fun <reified T, reified S> myEq(x: T, y: S) = x == y
|
||||
|
||||
// CHECK_NOT_CALLED_IN_SCOPE: scope=testCompareDifferentInstncesInInlineTemplate$caseJsEq function=equals
|
||||
// CHECK_NEW_COUNT: function=testCompareDifferentInstncesInInlineTemplate$caseJsEq count=0
|
||||
// CHECK_NEW_COUNT: function=testCompareDifferentInstncesInInlineTemplate$caseJsEq count=8
|
||||
fun caseJsEq() {
|
||||
assertTrue(myEq(ClassInt(1), ClassInt(1)))
|
||||
assertTrue(myEq(ClassString("foo"), ClassString("foo")))
|
||||
|
||||
+1
-2
@@ -2,8 +2,7 @@
|
||||
package foo
|
||||
|
||||
// CHECK_NOT_CALLED: isTypeOfOrNull
|
||||
// CHECK_NULLS_COUNT: function=box count=10 TARGET_BACKENDS=JS
|
||||
// CHECK_NULLS_COUNT: function=box count=6 IGNORED_BACKENDS=JS
|
||||
// CHECK_NULLS_COUNT: function=box count=10
|
||||
|
||||
inline
|
||||
fun <reified T> Any?.isTypeOfOrNull() = this is T?
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
// EXPECTED_REACHABLE_NODES: 1281
|
||||
// IGNORE_BACKEND: JS_IR, JS_IR_ES6
|
||||
|
||||
fun box(): String {
|
||||
val a = CharArray(1)
|
||||
|
||||
+2
-1
@@ -15,4 +15,5 @@ suspend fun bar(): Unit {
|
||||
}
|
||||
|
||||
// LINES(JS): 39 4 4 4 7 5 5 45 45 5 93 45 5 5 6 4 4 4 9 15 9 9 9 * 9 15 10 10 11 11 11 11 11 * 11 12 12 13 13 13 13 13 13 13 14 14 * 9 15 9 9 9 9
|
||||
// LINES(JS_IR): 4 4 * 93 93 45 45 7 7 6 9 9 * 9 * 9 * 10 10 * 11 * 11 12 12 * 13 * 13 14 14 15 15
|
||||
// LINES(JS_IR): 4 4 * 93 93 3 45 45 7 7 6 9 9 * 9 * 9 * 10 10 * 11 * 11 12 12 * 13 * 13 14 14 15 15
|
||||
|
||||
|
||||
@@ -33,4 +33,4 @@ inline operator fun P.component1() = a
|
||||
inline operator fun P.component2() = b
|
||||
|
||||
// LINES(JS): 15 22 17 17 31 18 18 33 20 20 21 21 22 22 3 23 9 9 9 9 4 9 9 9 6 6 31 7 7 33 11 11 12 12 15 15 25 27 26 26 29 29 29 * 31 31 31 33 33 33 * 1 * 1
|
||||
// LINES(JS_IR): 1 1 1 1 1 1 1 1 * 3 3 9 9 4 9 * 6 31 * 7 33 11 11 12 12 15 15 25 25 26 26 29 29 29 29 29 29 29 29 29 29 29 29 31 31 31 31 33 33 33 33 15 16 15 * 17 31 * 18 33 20 20 21 21 22 22 * 1
|
||||
// LINES(JS_IR): 1 1 1 1 1 1 1 1 * 3 3 9 9 4 9 * 6 31 9 * 7 33 9 11 11 12 12 15 15 25 25 26 26 29 29 29 29 29 29 29 29 29 29 29 29 31 31 31 31 33 33 33 33 15 16 15 * 17 31 16 * 18 33 16 20 20 21 21 22 22 * 1
|
||||
|
||||
+3
-2
@@ -17,5 +17,6 @@ fun box() {
|
||||
}
|
||||
}
|
||||
|
||||
// LINES(JS): 1 18 2 2 10 2 2 2 2 2 2 3 3 6 6 6 6 7 7 10 10 10 10 10 10 11 11 14 14 15 15 15 15 16 16
|
||||
// LINES(JS_IR): 1 1 * 2 2 2 2 2 2 2 2 3 3 6 6 6 6 6 6 6 7 7 10 10 10 10 11 11 14 15 15 15 15 15 15 15 15 16 16
|
||||
// LINES(JS): 1 18 2 2 10 2 2 2 2 2 2 3 3 6 6 6 6 7 7 10 10 10 10 10 10 11 11 14 14 15 15 15 15 16 16
|
||||
// LINES(JS_IR): 1 1 * 2 2 2 2 2 2 2 2 3 3 6 6 6 6 6 6 6 7 7 10 10 10 10 11 11 14 15 15 15 15 15 15 15 15 16 16
|
||||
|
||||
|
||||
@@ -10,4 +10,4 @@ fun bar() {
|
||||
}
|
||||
|
||||
// LINES(JS): 1 1 1 1 1 6 2 2 3 3 4 4 8 10 2 2 9 2 3 3 4 4
|
||||
// LINES(JS_IR): 1 1 2 3 3 3 4 4 8 8 * 2 3 3 3 4 4
|
||||
// LINES(JS_IR): 1 1 2 3 3 3 4 4 8 8 * 2 9 2 3 3 3 4 4
|
||||
@@ -22,5 +22,5 @@ fun box() {
|
||||
foo("42")
|
||||
}
|
||||
|
||||
// LINES(JS): 6 20 23 7 7 21 7 8 8 21 8 7 7 22 7 8 8 22 8
|
||||
// LINES(JS_IR): 20 20 * 7 7 8 8 * 7 7 8 8
|
||||
// LINES(JS): 6 20 23 7 7 21 7 8 8 21 8 7 7 22 7 8 8 22 8
|
||||
// LINES(JS_IR): 20 20 * 7 7 8 7 8 8 * 7 7 8 7 8 8
|
||||
Reference in New Issue
Block a user