[JS] Support evaluation of const intrinsics for K2
#KT-56023 Fixed #KT-51582 Fixed
This commit is contained in:
+1
@@ -1,5 +1,6 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: NATIVE
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// `Boolean.equals(Boolean)` will not be evaluated in K1
|
||||
// IGNORE_BACKEND_K1: NATIVE
|
||||
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: NATIVE
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE, JS_IR, JS_IR_ES6
|
||||
|
||||
const val minusOneVal = (-1).toByte()
|
||||
const val oneVal = 1.toByte()
|
||||
|
||||
+1
@@ -1,5 +1,6 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: NATIVE
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// `Char.equals(Char)` will not be evaluated in K1
|
||||
// IGNORE_BACKEND_K1: NATIVE
|
||||
// WITH_STDLIB
|
||||
|
||||
+7
-3
@@ -1,12 +1,14 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: NATIVE
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE, JS_IR, JS_IR_ES6
|
||||
|
||||
const val minusOneVal = -1.0
|
||||
const val oneVal = 1.0
|
||||
const val twoVal = 2.0
|
||||
const val threeVal = 3.0
|
||||
const val fourVal = 4.0
|
||||
const val oneAndAHalf = 1.5
|
||||
|
||||
const val byteVal = 2.toByte()
|
||||
const val shortVal = 2.toShort()
|
||||
@@ -87,6 +89,7 @@ const val equals4 = fourVal == twoVal
|
||||
|
||||
const val toString1 = oneVal.toString()
|
||||
const val toString2 = twoVal.toString()
|
||||
const val toString3 = oneAndAHalf.toString()
|
||||
|
||||
fun box(): String {
|
||||
if (compareTo1 != -1) return "Fail 1.1"
|
||||
@@ -159,8 +162,9 @@ fun box(): String {
|
||||
if (equals3 != false) return "Fail 9.3"
|
||||
if (equals4 != false) return "Fail 9.4"
|
||||
|
||||
if (toString1 != "1.0") return "Fail 10.1"
|
||||
if (toString2 != "2.0") return "Fail 10.2"
|
||||
if (toString1 != "1.0" && toString1 != "1" /* JS */) return "Fail 10.1"
|
||||
if (toString2 != "2.0" && toString2 != "2" /* JS */) return "Fail 10.2"
|
||||
if (toString3 != "1.5") return "Fail 10.3"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+4
-3
@@ -12,8 +12,9 @@ const val name3 = EnumClass.anotherValue.name
|
||||
const val name4 = EnumClass.WITH_UNDERSCORE.name
|
||||
|
||||
fun box(): String {
|
||||
if (name2 != "VALUE") return "Fail 1"
|
||||
if (name3 != "anotherValue") return "Fail 2"
|
||||
if (name4 != "WITH_UNDERSCORE") return "Fail 3"
|
||||
if (EnumClass.OK.name != "OK") return "Fail 1"
|
||||
if (name2 != "VALUE") return "Fail 2"
|
||||
if (name3 != "anotherValue") return "Fail 3"
|
||||
if (name4 != "WITH_UNDERSCORE") return "Fail 4"
|
||||
return name1
|
||||
}
|
||||
+7
-3
@@ -1,12 +1,14 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: NATIVE
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE, JS_IR, JS_IR_ES6
|
||||
|
||||
const val minusOneVal = -1.0f
|
||||
const val oneVal = 1.0f
|
||||
const val twoVal = 2.0f
|
||||
const val threeVal = 3.0f
|
||||
const val fourVal = 4.0f
|
||||
const val oneAndAHalf = 1.5f
|
||||
|
||||
const val byteVal = 2.toByte()
|
||||
const val shortVal = 2.toShort()
|
||||
@@ -87,6 +89,7 @@ const val equals4 = fourVal == twoVal
|
||||
|
||||
const val toString1 = oneVal.toString()
|
||||
const val toString2 = twoVal.toString()
|
||||
const val toString3 = oneAndAHalf.toString()
|
||||
|
||||
fun box(): String {
|
||||
if (compareTo1 != -1) return "Fail 1.1"
|
||||
@@ -159,8 +162,9 @@ fun box(): String {
|
||||
if (equals3 != false) return "Fail 9.3"
|
||||
if (equals4 != false) return "Fail 9.4"
|
||||
|
||||
if (toString1 != "1.0") return "Fail 10.1"
|
||||
if (toString2 != "2.0") return "Fail 10.2"
|
||||
if (toString1 != "1.0" && toString1 != "1" /* JS */) return "Fail 10.1"
|
||||
if (toString2 != "2.0" && toString2 != "2" /* JS */) return "Fail 10.2"
|
||||
if (toString3 != "1.5") return "Fail 10.3"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+2
-1
@@ -1,7 +1,8 @@
|
||||
// !LANGUAGE: +IntrinsicConstEvaluation
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: NATIVE
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE, JS_IR, JS_IR_ES6
|
||||
|
||||
const val flag = true
|
||||
const val value = 10
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: NATIVE
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE, JS_IR, JS_IR_ES6
|
||||
|
||||
const val minusOneVal = -1
|
||||
const val oneVal = 1
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: NATIVE
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE, JS_IR, JS_IR_ES6
|
||||
|
||||
const val minusOneVal = -1L
|
||||
const val oneVal = 1L
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: NATIVE
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// IGNORE_BACKEND_K1: JVM_IR, NATIVE, JS_IR, JS_IR_ES6
|
||||
|
||||
const val minusOneVal = (-1).toShort()
|
||||
const val oneVal = 1.toShort()
|
||||
|
||||
+1
@@ -1,5 +1,6 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: NATIVE
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// WITH_STDLIB
|
||||
|
||||
const val code = '1'.code
|
||||
|
||||
+1
@@ -1,5 +1,6 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: NATIVE
|
||||
// TARGET_BACKEND: JS_IR
|
||||
|
||||
const val someStr = "123"
|
||||
const val otherStr = "other"
|
||||
|
||||
+1
@@ -1,5 +1,6 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
// TARGET_BACKEND: NATIVE
|
||||
// TARGET_BACKEND: JS_IR
|
||||
// WITH_STDLIB
|
||||
|
||||
const val byteVal: UByte = 1u
|
||||
|
||||
Reference in New Issue
Block a user