[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;"<!>)
|
||||
}
|
||||
+6
@@ -7104,6 +7104,12 @@ public class FirJsBoxTestGenerated extends AbstractFirJsBoxTest {
|
||||
runTest("js/js.translator/testData/box/jsCode/comments.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeString.kt")
|
||||
public void testCompileTimeString() throws Exception {
|
||||
runTest("js/js.translator/testData/box/jsCode/compileTimeString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("constantExpression.kt")
|
||||
public void testConstantExpression() throws Exception {
|
||||
|
||||
+6
@@ -7210,6 +7210,12 @@ public class FirJsES6BoxTestGenerated extends AbstractFirJsES6BoxTest {
|
||||
runTest("js/js.translator/testData/box/jsCode/comments.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeString.kt")
|
||||
public void testCompileTimeString() throws Exception {
|
||||
runTest("js/js.translator/testData/box/jsCode/compileTimeString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("constantExpression.kt")
|
||||
public void testConstantExpression() throws Exception {
|
||||
|
||||
+60
@@ -144,6 +144,48 @@ public class FirPsiJsOldFrontendDiagnosticsWithBackendTestGenerated extends Abst
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/badAssignment.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeString.kt")
|
||||
public void testCompileTimeString() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeStringWithCompanionVal.kt")
|
||||
public void testCompileTimeStringWithCompanionVal() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeStringWithCompanionVal.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeStringWithConstVal.kt")
|
||||
public void testCompileTimeStringWithConstVal() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeStringWithConstVal.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeStringWithFunCall.kt")
|
||||
public void testCompileTimeStringWithFunCall() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeStringWithFunCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeStringWithIntrinConstCall.kt")
|
||||
public void testCompileTimeStringWithIntrinConstCall() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeStringWithIntrinConstCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeStringWithTopLevelVal.kt")
|
||||
public void testCompileTimeStringWithTopLevelVal() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeStringWithTopLevelVal.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeStringWithVal.kt")
|
||||
public void testCompileTimeStringWithVal() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeStringWithVal.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("deleteOperation.kt")
|
||||
public void testDeleteOperation() throws Exception {
|
||||
@@ -156,6 +198,24 @@ public class FirPsiJsOldFrontendDiagnosticsWithBackendTestGenerated extends Abst
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/error.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaScriptEmpty.kt")
|
||||
public void testJavaScriptEmpty() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/javaScriptEmpty.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaScriptError.kt")
|
||||
public void testJavaScriptError() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/javaScriptError.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaScriptWarning.kt")
|
||||
public void testJavaScriptWarning() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/javaScriptWarning.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("noJavaScriptProduced.kt")
|
||||
public void testNoJavaScriptProduced() throws Exception {
|
||||
|
||||
+60
@@ -144,6 +144,48 @@ public class DiagnosticsWithJsStdLibAndBackendTestGenerated extends AbstractDiag
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/badAssignment.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeString.kt")
|
||||
public void testCompileTimeString() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeStringWithCompanionVal.kt")
|
||||
public void testCompileTimeStringWithCompanionVal() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeStringWithCompanionVal.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeStringWithConstVal.kt")
|
||||
public void testCompileTimeStringWithConstVal() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeStringWithConstVal.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeStringWithFunCall.kt")
|
||||
public void testCompileTimeStringWithFunCall() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeStringWithFunCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeStringWithIntrinConstCall.kt")
|
||||
public void testCompileTimeStringWithIntrinConstCall() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeStringWithIntrinConstCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeStringWithTopLevelVal.kt")
|
||||
public void testCompileTimeStringWithTopLevelVal() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeStringWithTopLevelVal.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeStringWithVal.kt")
|
||||
public void testCompileTimeStringWithVal() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/compileTimeStringWithVal.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("deleteOperation.kt")
|
||||
public void testDeleteOperation() throws Exception {
|
||||
@@ -156,6 +198,24 @@ public class DiagnosticsWithJsStdLibAndBackendTestGenerated extends AbstractDiag
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/error.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaScriptEmpty.kt")
|
||||
public void testJavaScriptEmpty() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/javaScriptEmpty.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaScriptError.kt")
|
||||
public void testJavaScriptError() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/javaScriptError.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("javaScriptWarning.kt")
|
||||
public void testJavaScriptWarning() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithJsStdLibAndBackendCompilation/jsCode/javaScriptWarning.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("noJavaScriptProduced.kt")
|
||||
public void testNoJavaScriptProduced() throws Exception {
|
||||
|
||||
+6
@@ -7210,6 +7210,12 @@ public class IrBoxJsES6TestGenerated extends AbstractIrBoxJsES6Test {
|
||||
runTest("js/js.translator/testData/box/jsCode/comments.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeString.kt")
|
||||
public void testCompileTimeString() throws Exception {
|
||||
runTest("js/js.translator/testData/box/jsCode/compileTimeString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("constantExpression.kt")
|
||||
public void testConstantExpression() throws Exception {
|
||||
|
||||
+6
@@ -7104,6 +7104,12 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
|
||||
runTest("js/js.translator/testData/box/jsCode/comments.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("compileTimeString.kt")
|
||||
public void testCompileTimeString() throws Exception {
|
||||
runTest("js/js.translator/testData/box/jsCode/compileTimeString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("constantExpression.kt")
|
||||
public void testConstantExpression() throws Exception {
|
||||
|
||||
@@ -0,0 +1,200 @@
|
||||
// WITH_STDLIB
|
||||
|
||||
// MODULE: lib1
|
||||
// FILE: f.kt
|
||||
const val LIB_INT = 1
|
||||
const val LIB_STR = "LIB_STR"
|
||||
const val LIB_CHAR = '1'
|
||||
const val LIB_UINT = 1U
|
||||
const val LIB_ULINT = 1UL
|
||||
const val LIB_DOUBLE = 0.1
|
||||
const val LIB_FLOAT = 0.1f
|
||||
|
||||
open class LIB_Class {
|
||||
companion object {
|
||||
const val STR = "LIB_ClassSTR"
|
||||
}
|
||||
}
|
||||
|
||||
// MODULE: main(lib1)
|
||||
// FILE: main.kt
|
||||
|
||||
const val INT = 2
|
||||
const val STR = "STR"
|
||||
const val CHAR = '2'
|
||||
const val UINT = 2U
|
||||
const val ULINT = 2UL
|
||||
const val DOUBLE = 0.2
|
||||
const val FLOAT = 0.2f
|
||||
|
||||
open class Class {
|
||||
companion object {
|
||||
const val STR = "ClassSTR"
|
||||
}
|
||||
|
||||
fun testClassCompanion(): String {
|
||||
js("""
|
||||
function testClassCompanionInnerBox() {
|
||||
if ('$STR' != 'ClassSTR') { return "Not OK Class.STR"; }
|
||||
return "OK";
|
||||
}
|
||||
""")
|
||||
return js("testClassCompanionInnerBox()") as String
|
||||
}
|
||||
}
|
||||
|
||||
class Child : Class() {
|
||||
fun testParentCompanion(): String {
|
||||
js("""
|
||||
function testParentCompanionInnerBox() {
|
||||
if ('$STR' != 'ClassSTR') { return "Not OK Class.STR"; }
|
||||
return "OK";
|
||||
}
|
||||
""")
|
||||
return js("testParentCompanionInnerBox()") as String
|
||||
}
|
||||
}
|
||||
|
||||
fun testConstantInlining(): String {
|
||||
js("""
|
||||
function testConstantInliningInnerBox() {
|
||||
if ($INT != 2) { return "Not OK INT"; }
|
||||
if ('$STR' != 'STR') { return "Not OK STR"; }
|
||||
if ('$CHAR' != '2') { return "Not OK CHAR"; }
|
||||
if ($UINT != '2') { return "Not OK UINT"; }
|
||||
if ($ULINT != '2') { return "Not OK ULINT"; }
|
||||
if ($DOUBLE > 0.21) { return "Not OK DOUBLE"; }
|
||||
if ($FLOAT > 0.21) { return "Not OK FLOAT"; }
|
||||
if ('${Class.STR}' != 'ClassSTR') { return "Not OK Class.STR"; }
|
||||
|
||||
return "OK";
|
||||
}
|
||||
""")
|
||||
return js("testConstantInliningInnerBox()") as String
|
||||
}
|
||||
|
||||
fun testConstantInliningFromOtherLib(): String {
|
||||
js("""
|
||||
function testConstantInliningFromOtherLibInnerBox() {
|
||||
if ($LIB_INT != 1) { return "Not OK LIB_INT"; }
|
||||
if ('$LIB_STR' != 'LIB_STR') { return "Not OK LIB_STR"; }
|
||||
if ('$LIB_CHAR' != '1') { return "Not OK LIB_CHAR"; }
|
||||
if ($LIB_UINT != '1') { return "Not OK LIB_UINT"; }
|
||||
if ($LIB_ULINT != '1') { return "Not OK LIB_ULINT"; }
|
||||
if ($LIB_DOUBLE > 0.11) { return "Not OK LIB_DOUBLE"; }
|
||||
if ($LIB_FLOAT > 0.11) { return "Not OK LIB_FLOAT"; }
|
||||
if ('${LIB_Class.STR}' != 'LIB_ClassSTR') { return "Not OK LIB_Class.STR"; }
|
||||
|
||||
return "OK";
|
||||
}
|
||||
""")
|
||||
return js("testConstantInliningFromOtherLibInnerBox()") as String
|
||||
}
|
||||
|
||||
fun testConstEvaluation(): String {
|
||||
js("""
|
||||
function testConstEvaluationInnerBox() {
|
||||
if (${INT != 2}) { return "Not OK INT"; }
|
||||
if (${CHAR != '2'}) { return "Not OK CHAR"; }
|
||||
if (${STR != "STR"}) { return "Not OK STR"; }
|
||||
if (${STR.length} != 3) { return "Not OK STR.length"; }
|
||||
if (${Class.STR != "ClassSTR"}) { return "Not OK Class.STR"; }
|
||||
if (${Class.STR.length} != 8) { return "Not OK Class.STR.length"; }
|
||||
|
||||
if (${LIB_INT != 1}) { return "Not OK LIB_INT"; }
|
||||
if (${LIB_CHAR != '1'}) { return "Not OK LIB_CHAR"; }
|
||||
if (${LIB_STR != "LIB_STR"}) { return "Not OK LIB_STR"; }
|
||||
if (${LIB_STR.length} != 7) { return "Not OK LIB_STR.length"; }
|
||||
if (${LIB_Class.STR != "LIB_ClassSTR"}) { return "Not OK LIB_Class.STR"; }
|
||||
if (${LIB_Class.STR.length} != 12) { return "Not OK LIB_Class.STR.length"; }
|
||||
|
||||
if (${(INT != 2 || CHAR != '2') && (STR == "STR")}) { return "Not OK Boolean operations"; }
|
||||
|
||||
if (${INT + 2 / INT - 3 * INT} != -3) { return "Not OK INT arithmetic operations"; }
|
||||
if (${LIB_INT + 2 / LIB_INT - 3 * LIB_INT} != 0) { return "Not OK LIB_INT arithmetic operations"; }
|
||||
|
||||
if ('${STR + " " + LIB_Class.STR}' != 'STR LIB_ClassSTR') { return "Not OK STR plus"; }
|
||||
|
||||
return "OK";
|
||||
}
|
||||
""")
|
||||
return js("testConstEvaluationInnerBox()") as String
|
||||
}
|
||||
|
||||
inline fun jsInInlineFunction() {
|
||||
js("""
|
||||
function jsInInlineFunctionInnerBox() {
|
||||
if ($INT != 2) { return "Not OK INT"; }
|
||||
if ($LIB_INT != 1) { return "Not OK LIB_INT"; }
|
||||
if ('${Class.STR}' != 'ClassSTR') { return "Not OK Class.STR"; }
|
||||
if ('${LIB_Class.STR}' != 'LIB_ClassSTR') { return "Not OK LIB_Class.STR"; }
|
||||
|
||||
return "OK";
|
||||
}
|
||||
""")
|
||||
}
|
||||
|
||||
fun testJsInInlineFunction(): String {
|
||||
jsInInlineFunction()
|
||||
return js("jsInInlineFunctionInnerBox()") as String
|
||||
}
|
||||
|
||||
fun testCaptureVariables(param1: String = "parameter"): String {
|
||||
val STR1 = "local variable"
|
||||
|
||||
js("""
|
||||
function testCaptureVariablesInnerBox() {
|
||||
if (param$LIB_INT != 'parameter') { return "Not OK parameter"; }
|
||||
if ($STR$LIB_INT != 'local variable') { return "Not OK local variable"; }
|
||||
|
||||
return "OK";
|
||||
}
|
||||
""")
|
||||
return js("testCaptureVariablesInnerBox()") as String
|
||||
}
|
||||
|
||||
inline fun jsInInlineFunctionCaptureVariables(param1: String = "parameter") {
|
||||
val STR1 = "local variable"
|
||||
|
||||
js("""
|
||||
function jsInInlineFunctionCaptureVariablesInnerBox() {
|
||||
if (param$LIB_INT != 'parameter') { return "Not OK parameter"; }
|
||||
if ($STR$LIB_INT != 'local variable') { return "Not OK local variable"; }
|
||||
|
||||
return "OK";
|
||||
}
|
||||
""")
|
||||
}
|
||||
|
||||
fun testCaptureVariablesInlineFunction(): String {
|
||||
jsInInlineFunctionCaptureVariables()
|
||||
return js("jsInInlineFunctionCaptureVariablesInnerBox()") as String
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var r = Class().testClassCompanion()
|
||||
if (r != "OK") { return "Fail Class.testClassCompanion: $r" }
|
||||
|
||||
r = Child().testParentCompanion()
|
||||
if (r != "OK") { return "Fail Class.testParentCompanion: $r" }
|
||||
|
||||
r = testConstantInlining()
|
||||
if (r != "OK") { return "Fail testConstantInlining: $r" }
|
||||
|
||||
r = testConstantInliningFromOtherLib()
|
||||
if (r != "OK") { return "Fail testConstantInliningFromOtherLib: $r" }
|
||||
|
||||
r = testConstEvaluation()
|
||||
if (r != "OK") { return "Fail testConstEvaluation: $r" }
|
||||
|
||||
r = testJsInInlineFunction()
|
||||
if (r != "OK") { return "Fail testJsInInlineFunction: $r" }
|
||||
|
||||
r = testCaptureVariables()
|
||||
if (r != "OK") { return "Fail testCaptureVariables: $r" }
|
||||
|
||||
r = testCaptureVariablesInlineFunction()
|
||||
if (r != "OK") { return "Fail testCaptureVariablesInlineFunction: $r" }
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user