3fa82c7bb1
Some boolean expressions could be transformed into `IrWhen` node. To understand that this node is actually a boolean expression, we need to analyze its origin. #KT-62683
123 lines
4.0 KiB
Kotlin
Vendored
123 lines
4.0 KiB
Kotlin
Vendored
// FIR_DIFFERENCE
|
|
// The difference is okay: K1 and K2 report a bit differently
|
|
// ERROR_POLICY: SEMANTIC
|
|
|
|
@file:Suppress(
|
|
"DEPRECATED_IDENTITY_EQUALS",
|
|
"SENSELESS_COMPARISON"
|
|
)
|
|
|
|
fun testTrimMargin() {
|
|
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>"""
|
|
| var x = 1;
|
|
""".<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>trimMargin()<!><!>)
|
|
}
|
|
|
|
fun testTrimIndent() {
|
|
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>"""
|
|
var x = 1;
|
|
""".<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>trimIndent()<!><!>)
|
|
}
|
|
|
|
const val ONE = 1
|
|
const val UONE = 1U
|
|
const val HALF = 0.5
|
|
const val TRUE = true
|
|
const val STR = "str"
|
|
const val CHAR = 'C'
|
|
|
|
fun testStringSize() {
|
|
js("var a = ${STR.length};")
|
|
}
|
|
|
|
fun testSimpleStringConcat() {
|
|
js("{ var a = '${'b'}'; }")
|
|
js("{ var a = ${123}; }")
|
|
js("{ var a = ${123U}; }")
|
|
js("{ var a = ${123L}; }")
|
|
js("{ var a = ${123UL}; }")
|
|
js("{ var a = ${1.23}; }")
|
|
js("{ var a = ${1.23f}; }")
|
|
js("{ var a = ${true}; }")
|
|
js("{ var a = ${false}; }")
|
|
js("{ var a = ${null}; }")
|
|
|
|
js("{ var a = ${ONE}; }")
|
|
js("{ var a = ${UONE}; }")
|
|
js("{ var a = ${HALF}; }")
|
|
js("{ var a = ${TRUE}; }")
|
|
js("{ var a = '${STR}'; }")
|
|
js("{ var a = '${CHAR}'; }")
|
|
}
|
|
|
|
fun testArithmeticOperations() {
|
|
js("{ var a = ${1 + 2}; }")
|
|
js("{ var a = ${1 - 2}; }")
|
|
js("{ var a = ${1 * 2}; }")
|
|
js("{ var a = ${1 / 2}; }")
|
|
js("{ var a = ${1 % 2}; }")
|
|
js("{ var a = ${1.1 + 2.1}; }")
|
|
js("{ var a = ${1.1 - 2.1}; }")
|
|
js("{ var a = ${1.1 * 2.1}; }")
|
|
js("{ var a = ${1.1 / 2.1}; }")
|
|
|
|
js("{ var a = ${ONE + 2}; }")
|
|
js("{ var a = ${HALF + 2.1}; }")
|
|
|
|
js("{ var a = '${"foo" + "bar"}'; }")
|
|
js("{ var a = '${"foo" + 'c'}'; }")
|
|
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = '${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>'c' + "foo"<!>}'; }"<!>)
|
|
|
|
js("{ var a = ${STR + STR}; }")
|
|
js("{ var a = ${STR + CHAR}; }")
|
|
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>CHAR + STR<!>}; }"<!>)
|
|
}
|
|
|
|
fun testLogicOperations() {
|
|
js("{ var a = ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>!true<!>}; }")
|
|
js("{ var a = ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>true or false<!>}; }")
|
|
js("{ var a = ${true || false}; }")
|
|
js("{ var a = ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>true and false<!>}; }")
|
|
js("{ var a = ${true && false}; }")
|
|
|
|
js("{ var a = ${TRUE && false}; }")
|
|
js("{ var a = ${TRUE or false}; }")
|
|
}
|
|
|
|
fun testEq() {
|
|
js("{ var a = ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>1 == 1<!>}; }")
|
|
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>1U == 1U<!>}; }"<!>)
|
|
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${UONE == 1U}; }"<!>)
|
|
js("{ var a = ${"FOO" == STR}; }")
|
|
js("{ var a = ${TRUE == null}; }")
|
|
js("{ var a = ${STR == null}; }")
|
|
|
|
js("{ var a = ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>1 != 1<!>}; }")
|
|
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>1U != 1U<!>}; }"<!>)
|
|
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${UONE != 1U}; }"<!>)
|
|
js("{ var a = ${"FOO" != STR}; }")
|
|
js("{ var a = ${TRUE != null}; }")
|
|
js("{ var a = ${STR != null}; }")
|
|
|
|
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>1 === 1<!>}; }"<!>)
|
|
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${TRUE === false}; }"<!>)
|
|
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${CHAR === 's'}; }"<!>)
|
|
|
|
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>1 !== 1<!>}; }"<!>)
|
|
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${TRUE !== false}; }"<!>)
|
|
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${CHAR !== 's'}; }"<!>)
|
|
}
|
|
|
|
fun testCmp() {
|
|
js("{ var a = ${1 < 1}; }")
|
|
js("{ var a = ${1 <= 1}; }")
|
|
js("{ var a = ${1 > 1}; }")
|
|
js("{ var a = ${1 >= 1}; }")
|
|
|
|
js("{ var a = ${"fo=" < "bar"}; }")
|
|
js("{ var a = ${'a' > 'c'}; }")
|
|
|
|
js("{ var a = ${ONE > 1}; }")
|
|
js("{ var a = ${STR <= "1"}; }")
|
|
}
|