[JS IR] Make Char a value class (again)

#KT-35100 Fixed
This commit is contained in:
Sergej Jaskiewicz
2021-12-01 16:22:09 +03:00
committed by Space
parent 599f705842
commit 67dfe7bed1
19 changed files with 226 additions and 51 deletions
+1 -2
View File
@@ -1,6 +1,5 @@
// EXPECTED_REACHABLE_NODES: 1293
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
open class A {
fun foo(): Char = 'X'
}
+1 -3
View File
@@ -1,8 +1,6 @@
// EXPECTED_REACHABLE_NODES: 1276
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
class A(val x: Char)
class A(@JsName("x") val x: Char)
fun typeOf(x: dynamic): String = js("typeof x")
+1 -2
View File
@@ -1,6 +1,5 @@
// EXPECTED_REACHABLE_NODES: 1288
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
@JsExport
interface I {
val a: Char
@@ -1,6 +1,4 @@
// EXPECTED_REACHABLE_NODES: 1292
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
abstract class A<out T> {
abstract fun foo(): T
}
@@ -1,6 +1,4 @@
// EXPECTED_REACHABLE_NODES: 1282
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
fun box(): String {
val a = 'Q'.foo()
if (a != "number") return "fail1: $a"
+4 -6
View File
@@ -1,10 +1,8 @@
// EXPECTED_REACHABLE_NODES: 1283
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
// CHECK_NOT_CALLED_IN_SCOPE: function=toBoxedChar scope=box$lambda
// CHECK_CALLED_IN_SCOPE: function=unboxChar scope=box$lambda
// CHECK_CALLED_IN_SCOPE: function=toBoxedChar scope=box
// CHECK_NOT_CALLED_IN_SCOPE: function=unboxChar scope=box
// CHECK_NOT_CALLED_IN_SCOPE: function=toBoxedChar scope=box$lambda TARGET_BACKENDS=JS
// CHECK_CALLED_IN_SCOPE: function=unboxChar scope=box$lambda TARGET_BACKENDS=JS
// CHECK_CALLED_IN_SCOPE: function=toBoxedChar scope=box TARGET_BACKENDS=JS
// CHECK_NOT_CALLED_IN_SCOPE: function=unboxChar scope=box TARGET_BACKENDS=JS
fun <T> bar(x: T, y: (T) -> Boolean): Boolean = y(x) && jsTypeOf(x.asDynamic()) != "number"
@@ -1,7 +1,6 @@
// EXPECTED_REACHABLE_NODES: 1289
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
@JsExport
open class A {
val foo: Char
get() = 'X'
@@ -31,6 +30,7 @@ interface I {
val mutable: Any
}
@JsExport
class B : A(), I
fun typeOf(x: dynamic): String = js("typeof x")
@@ -1,6 +1,4 @@
// EXPECTED_REACHABLE_NODES: 1283
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
fun foo(x: Any): String {
return when (x) {
is Char -> "char: ${x.toInt()}"