[JS IR] Add tests for JS code KLIB diagnostics
^KT-62425
This commit is contained in:
committed by
Space Team
parent
261527939b
commit
4ebfed04d3
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
fun testSimpleString() {
|
||||
js("var a = 123;")
|
||||
}
|
||||
|
||||
fun testSimpleStringPlus() {
|
||||
js("var a" + "=" + "123;")
|
||||
}
|
||||
|
||||
fun testSimpleStringConcat() {
|
||||
js("var a${"="}123;")
|
||||
}
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
// FIR_DIFFERENCE
|
||||
// The difference is okay: K1 and K2 report a bit differently
|
||||
|
||||
// MODULE: lib1
|
||||
// FILE: A.kt
|
||||
class ClassFromOtherModule {
|
||||
companion object {
|
||||
val valFromOtherModuleCompanion = "valFromOtherModuleCompanion"
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: B.kt
|
||||
class ClassFromOtherModule2 {
|
||||
companion object {
|
||||
val valFromOtherModuleCompanion2 = ClassFromOtherModule.valFromOtherModuleCompanion + "2"
|
||||
}
|
||||
}
|
||||
|
||||
// MODULE: main(lib1)
|
||||
// FILE: A.kt
|
||||
class ClassFromOtherFile {
|
||||
companion object {
|
||||
val valFromOtherFileCompanion = "valFromOtherFileCompanion"
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: B.kt
|
||||
class ClassFromOtherFile2 {
|
||||
companion object {
|
||||
val valFromOtherFileCompanion2 = ClassFromOtherFile.valFromOtherFileCompanion + "2"
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: Main.kt
|
||||
class ClassFromThisFile {
|
||||
companion object {
|
||||
val valFromThisFileCompanion = "valFromThisFileCompanion"
|
||||
|
||||
fun testCompanionFromThisCompanion() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion<!> + " = 1;"<!>)
|
||||
}
|
||||
}
|
||||
|
||||
fun testCompanionFromThis() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion<!> + " = 1;"<!>)
|
||||
}
|
||||
}
|
||||
|
||||
class ClassFromThisFile2 {
|
||||
companion object {
|
||||
val valFromThisFileCompanion2 = ClassFromThisFile.valFromThisFileCompanion + "2"
|
||||
|
||||
fun testCompanionFromThisCompanion() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion2<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion2<!> + " = 1;"<!>)
|
||||
}
|
||||
}
|
||||
|
||||
fun testCompanionFromThis() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion2<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion2<!> + " = 1;"<!>)
|
||||
}
|
||||
}
|
||||
|
||||
fun testCompanionValFromOtherModule() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>ClassFromOtherModule.valFromOtherModuleCompanion<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>ClassFromOtherModule.valFromOtherModuleCompanion<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testCompanionValFromOtherModule2() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>ClassFromOtherModule2.valFromOtherModuleCompanion2<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>ClassFromOtherModule2.valFromOtherModuleCompanion2<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
|
||||
fun testCompanionValFromOtherFile() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>ClassFromOtherFile.valFromOtherFileCompanion<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>ClassFromOtherFile.valFromOtherFileCompanion<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testCompanionValFromOtherFile2() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>ClassFromOtherFile2.valFromOtherFileCompanion2<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>ClassFromOtherFile2.valFromOtherFileCompanion2<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testCompanionValFromThisFile() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>ClassFromThisFile.valFromThisFileCompanion<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>ClassFromThisFile.valFromThisFileCompanion<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testCompanionValFromThisFile2() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>ClassFromThisFile2.valFromThisFileCompanion2<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>ClassFromThisFile2.valFromThisFileCompanion2<!> + " = 1;"<!>)
|
||||
}
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
// FIR_DIFFERENCE
|
||||
// The difference is okay: K1 and K2 report a bit differently
|
||||
|
||||
// MODULE: lib1
|
||||
// FILE: A.kt
|
||||
class ClassFromOtherModule {
|
||||
companion object {
|
||||
val valFromOtherModuleCompanion = "valFromOtherModuleCompanion"
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: B.kt
|
||||
class ClassFromOtherModule2 {
|
||||
companion object {
|
||||
val valFromOtherModuleCompanion2 = ClassFromOtherModule.valFromOtherModuleCompanion + "2"
|
||||
}
|
||||
}
|
||||
|
||||
// MODULE: main(lib1)
|
||||
// FILE: A.kt
|
||||
class ClassFromOtherFile {
|
||||
companion object {
|
||||
val valFromOtherFileCompanion = "valFromOtherFileCompanion"
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: B.kt
|
||||
class ClassFromOtherFile2 {
|
||||
companion object {
|
||||
val valFromOtherFileCompanion2 = ClassFromOtherFile.valFromOtherFileCompanion + "2"
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: Main.kt
|
||||
class ClassFromThisFile {
|
||||
companion object {
|
||||
val valFromThisFileCompanion = "valFromThisFileCompanion"
|
||||
|
||||
fun testCompanionFromThisCompanion() {
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion<!> + " = 1;")
|
||||
}
|
||||
}
|
||||
|
||||
fun testCompanionFromThis() {
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion<!> + " = 1;")
|
||||
}
|
||||
}
|
||||
|
||||
class ClassFromThisFile2 {
|
||||
companion object {
|
||||
val valFromThisFileCompanion2 = ClassFromThisFile.valFromThisFileCompanion + "2"
|
||||
|
||||
fun testCompanionFromThisCompanion() {
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion2<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion2<!> + " = 1;")
|
||||
}
|
||||
}
|
||||
|
||||
fun testCompanionFromThis() {
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion2<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion2<!> + " = 1;")
|
||||
}
|
||||
}
|
||||
|
||||
fun testCompanionValFromOtherModule() {
|
||||
js("var ${ClassFromOtherModule.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherModuleCompanion<!>} = 1;")
|
||||
js("var " + ClassFromOtherModule.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherModuleCompanion<!> + " = 1;")
|
||||
}
|
||||
|
||||
fun testCompanionValFromOtherModule2() {
|
||||
js("var ${ClassFromOtherModule2.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherModuleCompanion2<!>} = 1;")
|
||||
js("var " + ClassFromOtherModule2.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherModuleCompanion2<!> + " = 1;")
|
||||
}
|
||||
|
||||
|
||||
fun testCompanionValFromOtherFile() {
|
||||
js("var ${ClassFromOtherFile.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherFileCompanion<!>} = 1;")
|
||||
js("var " + ClassFromOtherFile.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherFileCompanion<!> + " = 1;")
|
||||
}
|
||||
|
||||
fun testCompanionValFromOtherFile2() {
|
||||
js("var ${ClassFromOtherFile2.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherFileCompanion2<!>} = 1;")
|
||||
js("var " + ClassFromOtherFile2.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherFileCompanion2<!> + " = 1;")
|
||||
}
|
||||
|
||||
fun testCompanionValFromThisFile() {
|
||||
js("var ${ClassFromThisFile.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion<!>} = 1;")
|
||||
js("var " + ClassFromThisFile.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion<!> + " = 1;")
|
||||
}
|
||||
|
||||
fun testCompanionValFromThisFile2() {
|
||||
js("var ${ClassFromThisFile2.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion2<!>} = 1;")
|
||||
js("var " + ClassFromThisFile2.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFileCompanion2<!> + " = 1;")
|
||||
}
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
// FIR_IDENTICAL
|
||||
// MODULE: lib1
|
||||
// FILE: A.kt
|
||||
const val constFromOtherModule = "constFromOtherModule"
|
||||
|
||||
class ClassFromOtherModule {
|
||||
companion object {
|
||||
const val constFromOtherModuleCompanion = "constFromOtherModuleCompanion"
|
||||
}
|
||||
}
|
||||
|
||||
// MODULE: main(lib1)
|
||||
// FILE: A.kt
|
||||
const val constFromOtherFile = "constFromOtherFile"
|
||||
|
||||
class ClassFromOtherFile {
|
||||
companion object {
|
||||
const val constFromOtherFileCompanion = "constFromOtherFileCompanion"
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: Main.kt
|
||||
const val constFromThisFile = "constFromThisFile"
|
||||
|
||||
open class ClassFromThisFile {
|
||||
companion object {
|
||||
const val constFromThisFileCompanion = "constFromThisFileCompanion"
|
||||
|
||||
fun testCompanionFromThisCompanion() {
|
||||
js("var ${constFromThisFileCompanion} = 1;")
|
||||
js("var " + constFromThisFileCompanion + " = 1;")
|
||||
}
|
||||
}
|
||||
|
||||
fun testCompanionFromThis() {
|
||||
js("var ${constFromThisFileCompanion} = 1;")
|
||||
js("var " + constFromThisFileCompanion + " = 1;")
|
||||
}
|
||||
}
|
||||
|
||||
class Class: ClassFromThisFile() {
|
||||
fun testCompanionFromParent() {
|
||||
js("var ${constFromThisFileCompanion} = 1;")
|
||||
js("var " + constFromThisFileCompanion + " = 1;")
|
||||
}
|
||||
}
|
||||
|
||||
fun testConstFromOtherModule() {
|
||||
js("var $constFromOtherModule = 1;")
|
||||
js("var " + constFromOtherModule + " = 1;")
|
||||
}
|
||||
|
||||
fun testCompanionConstFromOtherModule() {
|
||||
js("var ${ClassFromOtherModule.constFromOtherModuleCompanion} = 1;")
|
||||
js("var " + ClassFromOtherModule.constFromOtherModuleCompanion + " = 1;")
|
||||
}
|
||||
|
||||
fun testConstFromOtherFile() {
|
||||
js("var $constFromOtherFile = 1;")
|
||||
js("var " + constFromOtherFile + " = 1;")
|
||||
}
|
||||
|
||||
fun testCompanionConstFromOtherFile() {
|
||||
js("var ${ClassFromOtherFile.constFromOtherFileCompanion} = 1;")
|
||||
js("var " + ClassFromOtherFile.constFromOtherFileCompanion + " = 1;")
|
||||
}
|
||||
|
||||
fun testConstFromThisFile() {
|
||||
js("var $constFromThisFile = 1;")
|
||||
js("var " + constFromThisFile + " = 1;")
|
||||
}
|
||||
|
||||
fun testCompanionConstFromThisFile() {
|
||||
js("var ${ClassFromThisFile.constFromThisFileCompanion} = 1;")
|
||||
js("var " + ClassFromThisFile.constFromThisFileCompanion + " = 1;")
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
// FIR_DIFFERENCE
|
||||
// The difference is okay: K1 and K2 report a bit differently
|
||||
// ERROR_POLICY: SEMANTIC
|
||||
@file:Suppress("NOTHING_TO_INLINE")
|
||||
|
||||
fun function1() = "function1"
|
||||
|
||||
inline fun inlineFunction1() = "inlineFunction1"
|
||||
|
||||
class Class {
|
||||
fun method1() = "method1"
|
||||
inline fun inlineMethod1() = "method1"
|
||||
|
||||
fun testMethodFromThis() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var a = '${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>method1()<!>}' + '" + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>method1()<!> + "';"<!>)
|
||||
}
|
||||
|
||||
fun testInlineMethodFromThis() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var a = '${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>inlineMethod1()<!>}' + '" + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>inlineMethod1()<!> + "';"<!>)
|
||||
}
|
||||
}
|
||||
|
||||
fun testFunction() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var a = '${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>function1()<!>}' + '" + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>function1()<!> + "';"<!>)
|
||||
}
|
||||
|
||||
fun testInlineFunction() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var a = '${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>inlineFunction1()<!>}' + '" + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>inlineFunction1()<!> + "';"<!>)
|
||||
}
|
||||
|
||||
fun testMethod() {
|
||||
val c = Class()
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var a = '${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>c<!>.method1()}' + '" + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>c<!>.method1() + "';"<!>)
|
||||
}
|
||||
|
||||
fun testInlineMethod() {
|
||||
val c = Class()
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var a = '${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>c<!>.inlineMethod1()}' + '" + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>c<!>.inlineMethod1() + "';"<!>)
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
// FIR_DIFFERENCE
|
||||
// The difference is okay: K1 and K2 report a bit differently
|
||||
// ERROR_POLICY: SEMANTIC
|
||||
@file:Suppress("NOTHING_TO_INLINE")
|
||||
|
||||
fun function1() = "function1"
|
||||
|
||||
inline fun inlineFunction1() = "inlineFunction1"
|
||||
|
||||
class Class {
|
||||
fun method1() = "method1"
|
||||
inline fun inlineMethod1() = "method1"
|
||||
|
||||
fun testMethodFromThis() {
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var a = '${method1()}' + '" + method1() + "';"<!>)
|
||||
}
|
||||
|
||||
fun testInlineMethodFromThis() {
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var a = '${inlineMethod1()}' + '" + inlineMethod1() + "';"<!>)
|
||||
}
|
||||
}
|
||||
|
||||
fun testFunction() {
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var a = '${function1()}' + '" + function1() + "';"<!>)
|
||||
}
|
||||
|
||||
fun testInlineFunction() {
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var a = '${inlineFunction1()}' + '" + inlineFunction1() + "';"<!>)
|
||||
}
|
||||
|
||||
fun testMethod() {
|
||||
val c = Class()
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var a = '${c.method1()}' + '" + c.method1() + "';"<!>)
|
||||
}
|
||||
|
||||
fun testInlineMethod() {
|
||||
val c = Class()
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var a = '${c.inlineMethod1()}' + '" + c.inlineMethod1() + "';"<!>)
|
||||
}
|
||||
+122
@@ -0,0 +1,122 @@
|
||||
// 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(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${true || false}; }"<!>)
|
||||
js("{ var a = ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>true and false<!>}; }")
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ var a = ${true && false}; }"<!>)
|
||||
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"{ 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"}; }")
|
||||
}
|
||||
+122
@@ -0,0 +1,122 @@
|
||||
// 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_SHOULD_BE_CONSTANT!>"""
|
||||
| var x = 1;
|
||||
""".trimMargin()<!>)
|
||||
}
|
||||
|
||||
fun testTrimIndent() {
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"""
|
||||
var x = 1;
|
||||
""".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.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>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_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = '${'c' + "foo"}'; }"<!>)
|
||||
|
||||
js("{ var a = ${STR + STR}; }")
|
||||
js("{ var a = ${STR + CHAR}; }")
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${CHAR + STR}; }"<!>)
|
||||
}
|
||||
|
||||
fun testLogicOperations() {
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${!true}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${true or false}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${true || false}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${true and false}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${true && false}; }"<!>)
|
||||
|
||||
js("{ var a = ${TRUE && false}; }")
|
||||
js("{ var a = ${TRUE or false}; }")
|
||||
}
|
||||
|
||||
fun testEq() {
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${1 == 1}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${1U == 1U}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${UONE == 1U}; }"<!>)
|
||||
js("{ var a = ${"FOO" == STR}; }")
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${TRUE == null}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${STR == null}; }"<!>)
|
||||
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${1 != 1}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${1U != 1U}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${UONE != 1U}; }"<!>)
|
||||
js("{ var a = ${"FOO" != STR}; }")
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${TRUE != null}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${STR != null}; }"<!>)
|
||||
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${1 === 1}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${TRUE === false}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${CHAR === 's'}; }"<!>)
|
||||
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${1 !== 1}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${TRUE !== false}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${CHAR !== 's'}; }"<!>)
|
||||
}
|
||||
|
||||
fun testCmp() {
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${1 < 1}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${1 <= 1}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${1 > 1}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${1 >= 1}; }"<!>)
|
||||
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${"fo=" < "bar"}; }"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"{ var a = ${'a' > 'c'}; }"<!>)
|
||||
|
||||
js("{ var a = ${ONE > 1}; }")
|
||||
js("{ var a = ${STR <= "1"}; }")
|
||||
}
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
// FIR_DIFFERENCE
|
||||
// The difference is okay: K1 and K2 report a bit differently
|
||||
// ERROR_POLICY: SEMANTIC
|
||||
|
||||
// MODULE: lib1
|
||||
// FILE: A.kt
|
||||
val valFromOtherModule = "valFromOtherModule"
|
||||
|
||||
// FILE: B.kt
|
||||
val valFromOtherModule2 = valFromOtherModule + "2"
|
||||
|
||||
// MODULE: main(lib1)
|
||||
// FILE: A.kt
|
||||
val valFromOtherFile = "valFromOtherFile"
|
||||
|
||||
// FILE: B.kt
|
||||
val valFromOtherFile2 = valFromOtherFile + "2"
|
||||
|
||||
// FILE: Main.kt
|
||||
val valFromThisFile = "valFromThisFile"
|
||||
val valFromThisFile2 = valFromThisFile + "2"
|
||||
|
||||
val valWithGetter: String get() = "valWithGetter"
|
||||
|
||||
fun testValFromOtherModule() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherModule<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherModule<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testValFromOtherModule2() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherModule2<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherModule2<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testValFromOtherFile() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherFile<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherFile<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testValFromOtherFile2() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherFile2<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherFile2<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testValFromThisFile() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFile<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFile<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testValFromThisFile2() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFile2<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFile2<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testValWithGetter() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valWithGetter<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valWithGetter<!> + " = 1;"<!>)
|
||||
}
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
// FIR_DIFFERENCE
|
||||
// The difference is okay: K1 and K2 report a bit differently
|
||||
// ERROR_POLICY: SEMANTIC
|
||||
|
||||
// MODULE: lib1
|
||||
// FILE: A.kt
|
||||
val valFromOtherModule = "valFromOtherModule"
|
||||
|
||||
// FILE: B.kt
|
||||
val valFromOtherModule2 = valFromOtherModule + "2"
|
||||
|
||||
// MODULE: main(lib1)
|
||||
// FILE: A.kt
|
||||
val valFromOtherFile = "valFromOtherFile"
|
||||
|
||||
// FILE: B.kt
|
||||
val valFromOtherFile2 = valFromOtherFile + "2"
|
||||
|
||||
// FILE: Main.kt
|
||||
val valFromThisFile = "valFromThisFile"
|
||||
val valFromThisFile2 = valFromThisFile + "2"
|
||||
|
||||
val valWithGetter: String get() = "valWithGetter"
|
||||
|
||||
fun testValFromOtherModule() {
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherModule<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherModule<!> + " = 1;")
|
||||
}
|
||||
|
||||
fun testValFromOtherModule2() {
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherModule2<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherModule2<!> + " = 1;")
|
||||
}
|
||||
|
||||
fun testValFromOtherFile() {
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherFile<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherFile<!> + " = 1;")
|
||||
}
|
||||
|
||||
fun testValFromOtherFile2() {
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherFile2<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromOtherFile2<!> + " = 1;")
|
||||
}
|
||||
|
||||
fun testValFromThisFile() {
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFile<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFile<!> + " = 1;")
|
||||
}
|
||||
|
||||
fun testValFromThisFile2() {
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFile2<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFile2<!> + " = 1;")
|
||||
}
|
||||
|
||||
fun testValWithGetter() {
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var ${valWithGetter} = 1;"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var " + valWithGetter + " = 1;"<!>)
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
// FIR_DIFFERENCE
|
||||
// The difference is okay: K1 and K2 report a bit differently
|
||||
// ERROR_POLICY: SEMANTIC
|
||||
|
||||
fun testValFromThisFunction() {
|
||||
val valFromThisFunction = "valFromThisFunction"
|
||||
val valFromThisFunction2 = valFromThisFunction + "2"
|
||||
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFunction<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFunction<!> + " = 1;"<!>)
|
||||
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFunction2<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFunction2<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testVarFromThisFunction() {
|
||||
var varFromThisFunction = "varFromThisFunction"
|
||||
var varFromThisFunction2 = varFromThisFunction + "2"
|
||||
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>varFromThisFunction<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>varFromThisFunction<!> + " = 1;"<!>)
|
||||
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>varFromThisFunction2<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>varFromThisFunction2<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testValFromParam(valFromParam: String) {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromParam<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromParam<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
class Class {
|
||||
val valFromClass = "valFromClass"
|
||||
|
||||
val valWithGetter: String get() = "valWithGetter"
|
||||
|
||||
fun testValFromThis() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromClass<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromClass<!> + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testValWithGetterThis() {
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valWithGetter<!>} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valWithGetter<!> + " = 1;"<!>)
|
||||
}
|
||||
}
|
||||
|
||||
fun testValFromClassObject() {
|
||||
val c = Class()
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>c<!>.valFromClass} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>c<!>.valFromClass + " = 1;"<!>)
|
||||
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>c<!>.valWithGetter} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>c<!>.valWithGetter + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testValFromObject() {
|
||||
val o = object {
|
||||
val valFromObject = "valFromClass"
|
||||
}
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>o<!>.valFromObject} = 1;"<!>)
|
||||
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>o<!>.valFromObject + " = 1;"<!>)
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
// FIR_DIFFERENCE
|
||||
// The difference is okay: K1 and K2 report a bit differently
|
||||
// ERROR_POLICY: SEMANTIC
|
||||
|
||||
fun testValFromThisFunction() {
|
||||
val valFromThisFunction = "valFromThisFunction"
|
||||
val valFromThisFunction2 = valFromThisFunction + "2"
|
||||
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFunction<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFunction<!> + " = 1;")
|
||||
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFunction2<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromThisFunction2<!> + " = 1;")
|
||||
}
|
||||
|
||||
fun testVarFromThisFunction() {
|
||||
var varFromThisFunction = "varFromThisFunction"
|
||||
var varFromThisFunction2 = varFromThisFunction + "2"
|
||||
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var ${varFromThisFunction} = 1;"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var " + varFromThisFunction + " = 1;"<!>)
|
||||
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var ${varFromThisFunction2} = 1;"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var " + varFromThisFunction2 + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testValFromParam(valFromParam: String) {
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var ${valFromParam} = 1;"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var " + valFromParam + " = 1;"<!>)
|
||||
}
|
||||
|
||||
class Class {
|
||||
val valFromClass = "valFromClass"
|
||||
|
||||
val valWithGetter: String get() = "valWithGetter"
|
||||
|
||||
fun testValFromThis() {
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromClass<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromClass<!> + " = 1;")
|
||||
}
|
||||
|
||||
fun testValWithGetterThis() {
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var ${valWithGetter} = 1;"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var " + valWithGetter + " = 1;"<!>)
|
||||
}
|
||||
}
|
||||
|
||||
fun testValFromClassObject() {
|
||||
val c = Class()
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>c<!>.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromClass<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>c<!>.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromClass<!> + " = 1;")
|
||||
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var ${c.valWithGetter} = 1;"<!>)
|
||||
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>"var " + c.valWithGetter + " = 1;"<!>)
|
||||
}
|
||||
|
||||
fun testValFromObject() {
|
||||
val o = object {
|
||||
val valFromObject = "valFromClass"
|
||||
}
|
||||
js("var ${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>o<!>.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromObject<!>} = 1;")
|
||||
js("var " + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>o<!>.<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>valFromObject<!> + " = 1;")
|
||||
}
|
||||
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
// FIR_IDENTICAL
|
||||
// ERROR_POLICY: SEMANTIC
|
||||
|
||||
fun testEmptyString() {
|
||||
js(<!JSCODE_NO_JAVASCRIPT_PRODUCED!>""<!>)
|
||||
}
|
||||
|
||||
const val SPACE = " "
|
||||
|
||||
fun testStringWithSpaces() {
|
||||
js(<!JSCODE_NO_JAVASCRIPT_PRODUCED!>"\n \n$SPACE \t" + " "<!>)
|
||||
}
|
||||
|
||||
fun testComment() {
|
||||
js(<!JSCODE_NO_JAVASCRIPT_PRODUCED!>"""
|
||||
// just a comment
|
||||
$SPACE
|
||||
"""<!>)
|
||||
}
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
// FIR_IDENTICAL
|
||||
// ERROR_POLICY: SEMANTIC
|
||||
|
||||
const val VALUE = 123
|
||||
|
||||
fun testJavaScriptError() {
|
||||
js(<!JSCODE_ERROR!>"var = $VALUE;"<!>)
|
||||
}
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
// FIR_IDENTICAL
|
||||
|
||||
const val VALUE = 888
|
||||
|
||||
fun testJavaScriptWarning() {
|
||||
js(<!JSCODE_WARNING!>"var a = 0$VALUE;"<!>)
|
||||
}
|
||||
Reference in New Issue
Block a user