[JS IR] Fix JS code diagnostics tests according to new KLIB checks

^KT-62425
This commit is contained in:
Alexander Korepanov
2023-10-12 14:03:14 +02:00
committed by Space Team
parent 04809a6b3b
commit 261527939b
12 changed files with 110 additions and 50 deletions
@@ -1,3 +1,8 @@
// FIR_DIFFERENCE
// The diagnostic cannot be implemented with the FIR frontend checker because it requires constant evaluation over FIR.
// The diagnostic is implemented as a klib check over IR.
// ERROR_POLICY: SEMANTIC
val a = "1"
fun nonConst(): String = "1"
@@ -5,20 +10,20 @@ fun nonConst(): String = "1"
fun test() {
val b = "b"
js(a)
js((b))
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>a<!>)
js((<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>b<!>))
js(("c"))
js(<!ARGUMENT_TYPE_MISMATCH!>3<!>)
js(<!ARGUMENT_TYPE_MISMATCH!>3 + 2<!>)
js(<!ARGUMENT_TYPE_MISMATCH!>1.0f<!>)
js(<!ARGUMENT_TYPE_MISMATCH!>true<!>)
js("$a")
js(<!ARGUMENT_TYPE_MISMATCH, JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>3<!>)
js(<!ARGUMENT_TYPE_MISMATCH, JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>3 + 2<!>)
js(<!ARGUMENT_TYPE_MISMATCH, JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>1.0f<!>)
js(<!ARGUMENT_TYPE_MISMATCH, JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>true<!>)
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"$<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>a<!>"<!>)
js("${1}")
js("$b;")
js("${b}bb")
js(a + a)
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"$<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>b<!>;"<!>)
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>b<!>}bb"<!>)
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!><!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>a<!> + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>a<!><!>)
js("a" + "a")
js("ccc")
js(nonConst())
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>nonConst()<!>)
}
@@ -1,3 +1,8 @@
// FIR_DIFFERENCE
// The diagnostic cannot be implemented with the FIR frontend checker because it requires constant evaluation over FIR.
// The diagnostic is implemented as a klib check over IR.
// ERROR_POLICY: SEMANTIC
val a = "1"
fun nonConst(): String = "1"
@@ -5,18 +10,18 @@ fun nonConst(): String = "1"
fun test() {
val b = "b"
js(a)
js((b))
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>a<!>)
js((<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>b<!>))
js(("c"))
js(<!CONSTANT_EXPECTED_TYPE_MISMATCH, JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>3<!>)
js(<!JSCODE_ARGUMENT_SHOULD_BE_CONSTANT, TYPE_MISMATCH!>3 + 2<!>)
js(<!CONSTANT_EXPECTED_TYPE_MISMATCH, JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>1.0f<!>)
js(<!CONSTANT_EXPECTED_TYPE_MISMATCH, JSCODE_ARGUMENT_SHOULD_BE_CONSTANT!>true<!>)
js("$a")
js("$<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>a<!>")
js("${1}")
js("$b;")
js("${b}bb")
js(a + a)
js("$<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>b<!>;")
js("${<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>b<!>}bb")
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>a<!> + <!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>a<!>)
js("a" + "a")
js("ccc")
@@ -1,4 +1,9 @@
// FIR_DIFFERENCE
// The diagnostic cannot be implemented with the FIR frontend checker because it requires constant evaluation over FIR.
// The diagnostic is implemented as a klib check over IR.
// ERROR_POLICY: SEMANTIC
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun Int.foo(x: Int) {
js("this = x;")
js(<!JSCODE_ERROR!>"this = x;"<!>)
}
@@ -1,4 +1,9 @@
// FIR_DIFFERENCE
// The diagnostic cannot be implemented with the FIR frontend checker because it requires constant evaluation over FIR.
// The diagnostic is implemented as a klib check over IR.
// ERROR_POLICY: SEMANTIC
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun Int.foo(x: Int) {
js("this = x<!JSCODE_ERROR!><!>;")
}
}
@@ -1,8 +1,13 @@
// FIR_DIFFERENCE
// The diagnostic cannot be implemented with the FIR frontend checker because it requires constant evaluation over FIR.
// The diagnostic is implemented as a klib check over IR.
// ERROR_POLICY: SEMANTIC
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun foo(x: Any) {
js("delete x.foo;")
js("delete x['bar'];")
js("delete x.baz();")
js("delete this;")
js(<!JSCODE_ERROR!>"delete x.baz();"<!>)
js(<!JSCODE_ERROR!>"delete this;"<!>)
}
@@ -1,3 +1,8 @@
// FIR_DIFFERENCE
// The diagnostic cannot be implemented with the FIR frontend checker because it requires constant evaluation over FIR.
// The diagnostic is implemented as a klib check over IR.
// ERROR_POLICY: SEMANTIC
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun foo(x: Any) {
@@ -5,4 +10,4 @@ fun foo(x: Any) {
js("delete x['bar'];")
js("delete x.baz<!JSCODE_ERROR!>()<!>;")
js("delete <!JSCODE_ERROR!>this<!>;")
}
}
@@ -1,25 +1,30 @@
// FIR_DIFFERENCE
// The diagnostic cannot be implemented with the FIR frontend checker because it requires constant evaluation over FIR.
// The diagnostic is implemented as a klib check over IR.
// ERROR_POLICY: SEMANTIC
val code = """
var s = "hello"
+ );
"""
fun main(): Unit {
js("var = 10;")
js(<!JSCODE_ERROR!>"var = 10;"<!>)
js("""var = 10;""")
js(<!JSCODE_ERROR!>"""var = 10;"""<!>)
js("""var
js(<!JSCODE_ERROR!>"""var
= 777;
""")
"""<!>)
js("""
js(<!JSCODE_ERROR!>"""
var = 777;
""")
"""<!>)
js("var " + " = " + "10;")
js(<!JSCODE_ERROR!>"var " + " = " + "10;"<!>)
val n = 10
js("var = $n;")
js(<!JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>"var = $<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>n<!>;"<!>)
js(code)
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>code<!>)
}
@@ -1,3 +1,8 @@
// FIR_DIFFERENCE
// The diagnostic cannot be implemented with the FIR frontend checker because it requires constant evaluation over FIR.
// The diagnostic is implemented as a klib check over IR.
// ERROR_POLICY: SEMANTIC
val code = """
var s = "hello"
+ );
@@ -19,7 +24,7 @@ fun main(): Unit {
js(<!JSCODE_ERROR!>"var " + " = " + "10;"<!>)
val n = 10
js(<!JSCODE_ERROR!>"var = $n;"<!>)
js(<!JSCODE_ERROR!>"var = $<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION!>n<!>;"<!>)
js(<!JSCODE_ERROR!>code<!>)
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_ERROR!>code<!>)
}
@@ -1,16 +1,21 @@
// FIR_DIFFERENCE
// The diagnostic cannot be implemented with the FIR frontend checker because it requires constant evaluation over FIR.
// The diagnostic is implemented as a klib check over IR.
// ERROR_POLICY: SEMANTIC
fun test() {
js("")
js(" ")
js("""
""")
js(<!JSCODE_NO_JAVASCRIPT_PRODUCED!>""<!>)
js(<!JSCODE_NO_JAVASCRIPT_PRODUCED!>" "<!>)
js(<!JSCODE_NO_JAVASCRIPT_PRODUCED!>"""
"""<!>)
val empty = ""
js(empty)
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>empty<!>)
val whitespace = " "
js(whitespace)
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>whitespace<!>)
val multiline = """
"""
js(multiline)
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>multiline<!>)
}
@@ -1,3 +1,8 @@
// FIR_DIFFERENCE
// The diagnostic cannot be implemented with the FIR frontend checker because it requires constant evaluation over FIR.
// The diagnostic is implemented as a klib check over IR.
// ERROR_POLICY: SEMANTIC
fun test() {
js(<!JSCODE_NO_JAVASCRIPT_PRODUCED!>""<!>)
js(<!JSCODE_NO_JAVASCRIPT_PRODUCED!>" "<!>)
@@ -5,12 +10,12 @@ fun test() {
"""<!>)
val empty = ""
js(<!JSCODE_NO_JAVASCRIPT_PRODUCED!>empty<!>)
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_NO_JAVASCRIPT_PRODUCED!>empty<!>)
val whitespace = " "
js(<!JSCODE_NO_JAVASCRIPT_PRODUCED!>whitespace<!>)
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_NO_JAVASCRIPT_PRODUCED!>whitespace<!>)
val multiline = """
"""
js(<!JSCODE_NO_JAVASCRIPT_PRODUCED!>multiline<!>)
}
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_NO_JAVASCRIPT_PRODUCED!>multiline<!>)
}
@@ -1,10 +1,15 @@
// FIR_DIFFERENCE
// The diagnostic cannot be implemented with the FIR frontend checker because it requires constant evaluation over FIR.
// The diagnostic is implemented as a klib check over IR.
// ERROR_POLICY: SEMANTIC
fun main(): Unit {
js("var a = 08;")
js(<!JSCODE_WARNING!>"var a = 08;"<!>)
js("""var a =
js(<!JSCODE_WARNING!>"""var a =
08;""")
08;"""<!>)
val code = "var a = 08;"
js(code)
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_CAN_NOT_VERIFY_JAVASCRIPT!>code<!>)
}
@@ -1,3 +1,8 @@
// FIR_DIFFERENCE
// The diagnostic cannot be implemented with the FIR frontend checker because it requires constant evaluation over FIR.
// The diagnostic is implemented as a klib check over IR.
// ERROR_POLICY: SEMANTIC
fun main(): Unit {
js("var a =<!JSCODE_WARNING!> 08<!>;")
@@ -6,5 +11,5 @@ fun main(): Unit {
08<!>;""")
val code = "var a = 08;"
js(<!JSCODE_WARNING!>code<!>)
}
js(<!JSCODE_ARGUMENT_NON_CONST_EXPRESSION, JSCODE_WARNING!>code<!>)
}