[FIR JS] Support 2 JS diagnostics

The change in `FirDiagnosticsHandler` ensures
`DEBUG_INFO_DYNAMIC` is still reported in
`FirPsiJsOldFrontendDiagnosticsTestGenerated.testConventions`.

Support `SPREAD_OPERATOR_IN_DYNAMIC_CALL` and
`WRONG_OPERATION_WITH_DYNAMIC`
This commit is contained in:
Nikolay Lunyak
2023-04-03 15:12:18 +03:00
committed by Space Team
parent 57568770b4
commit 03e2152957
15 changed files with 181 additions and 23 deletions
@@ -1,17 +1,17 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
fun foo() {
for ((x, y) in A()) {
for ((<!WRONG_OPERATION_WITH_DYNAMIC!>x<!>, <!WRONG_OPERATION_WITH_DYNAMIC!>y<!>) in A()) {
println(x + y)
}
bar { (x, y) ->
bar { (<!WRONG_OPERATION_WITH_DYNAMIC!>x<!>, <!WRONG_OPERATION_WITH_DYNAMIC!>y<!>) ->
println(x + y)
}
val x: dynamic = Any()
val (y, z) = x
val (<!WRONG_OPERATION_WITH_DYNAMIC!>y<!>, <!WRONG_OPERATION_WITH_DYNAMIC!>z<!>) = x
println(y + z)
}
@@ -1,12 +1,12 @@
fun foo() {
val a: dynamic = Any()
println(a in setOf(1, 2))
println(1 in a)
println(1 !in a)
println(<!WRONG_OPERATION_WITH_DYNAMIC!>1 in a<!>)
println(<!WRONG_OPERATION_WITH_DYNAMIC!>1 !in a<!>)
when (2) {
in a -> println("ok")
<!WRONG_OPERATION_WITH_DYNAMIC!>in a<!> -> println("ok")
}
when (3) {
!in a -> println("ok")
<!WRONG_OPERATION_WITH_DYNAMIC!>!in a<!> -> println("ok")
}
}
@@ -1,8 +1,8 @@
fun foo() {
val a: dynamic = Any()
println(a[0])
println(a[0, 1])
println(<!WRONG_OPERATION_WITH_DYNAMIC!>a[0, 1]<!>)
a[0] = 23
a[0, 1] = 42
<!WRONG_OPERATION_WITH_DYNAMIC!>a[0, 1] = 42<!>
}
@@ -4,7 +4,7 @@ fun foo() {
val a: dynamic = Any()
val b: dynamic = Any()
val c = C()
println(a..b)
println(<!WRONG_OPERATION_WITH_DYNAMIC!>a..b<!>)
println(c..a)
println(a.rangeTo(b))
}
@@ -5,7 +5,7 @@ fun foo() {
val a: dynamic = Any()
val b: dynamic = Any()
val c = C()
println(a..<b)
println(<!WRONG_OPERATION_WITH_DYNAMIC!>a..<b<!>)
println(c..<a)
println(a.rangeUntil(b))
}
@@ -1,22 +1,22 @@
fun test(d: dynamic) {
val a = arrayOf(1, 2, 3)
d.foo(*d)
d.foo(*a)
d.foo(1, "2", *a)
d.foo(<!SPREAD_OPERATOR_IN_DYNAMIC_CALL!>*<!>d)
d.foo(<!SPREAD_OPERATOR_IN_DYNAMIC_CALL!>*<!>a)
d.foo(1, "2", <!SPREAD_OPERATOR_IN_DYNAMIC_CALL!>*<!>a)
d.foo(1, *a) <!VARARG_OUTSIDE_PARENTHESES!>{ }<!>
d.foo(*a) <!VARARG_OUTSIDE_PARENTHESES!>{ "" }<!>
d.foo(*a, *a)
d.foo(<!SPREAD_OPERATOR_IN_DYNAMIC_CALL!>*<!>a, <!SPREAD_OPERATOR_IN_DYNAMIC_CALL!>*<!>a)
d.foo(*a, *a) <!VARARG_OUTSIDE_PARENTHESES!>{ "" }<!>
d.foo(*a, 1, { "" }, *a)
d.foo(*a, 1)
d.foo(*a, *a, { "" })
d.foo(<!SPREAD_OPERATOR_IN_DYNAMIC_CALL!>*<!>a, 1, { "" }, <!SPREAD_OPERATOR_IN_DYNAMIC_CALL!>*<!>a)
d.foo(<!SPREAD_OPERATOR_IN_DYNAMIC_CALL!>*<!>a, 1)
d.foo(<!SPREAD_OPERATOR_IN_DYNAMIC_CALL!>*<!>a, <!SPREAD_OPERATOR_IN_DYNAMIC_CALL!>*<!>a, { "" })
bar(d)
bar(d, d)
bar(*d)
bar(*d, *d)
bar(*d, 23, *d)
bar(<!WRONG_OPERATION_WITH_DYNAMIC!>*d<!>)
bar(<!WRONG_OPERATION_WITH_DYNAMIC!>*d<!>, <!WRONG_OPERATION_WITH_DYNAMIC!>*d<!>)
bar(<!WRONG_OPERATION_WITH_DYNAMIC!>*d<!>, 23, <!WRONG_OPERATION_WITH_DYNAMIC!>*d<!>)
}
fun bar(vararg x: Int): Unit = TODO("$x")