FIR checker: report REDUNDANT_LABEL_WARNING

Since many labels are not present in the FIR tree, this checker is
implemented as a syntax checker. Comparing with FE1.0, this change
reports some REDUNDANT_LABEL_WARNING that FE1.0 has missed, especially
LHS of assignments.
This commit is contained in:
Tianyu Geng
2021-09-24 10:18:02 -07:00
committed by TeamCityServer
parent cbc9d08623
commit 363b25504d
48 changed files with 255 additions and 266 deletions
@@ -1,3 +1,3 @@
fun test() {
(d@ val bar = 2)
}
(<!REDUNDANT_LABEL_WARNING!>d@<!> val bar = 2)
}
@@ -6,19 +6,19 @@ import checkSubtype
fun test(i: Int?) {
if (i != null) {
foo(l1@ i)
foo(<!REDUNDANT_LABEL_WARNING!>l1@<!> i)
foo((i))
foo(l2@ (i))
foo((l3@ i))
foo(<!REDUNDANT_LABEL_WARNING!>l2@<!> (i))
foo((<!REDUNDANT_LABEL_WARNING!>l3@<!> i))
}
val a: Int = <!INITIALIZER_TYPE_MISMATCH!>l4@ ""<!>
val a: Int = <!INITIALIZER_TYPE_MISMATCH!><!REDUNDANT_LABEL_WARNING!>l4@<!> ""<!>
val b: Int = <!INITIALIZER_TYPE_MISMATCH!>("")<!>
val c: Int = checkSubtype<Int>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)
val d: Int = <!INITIALIZER_TYPE_MISMATCH!>checkSubtype<Long>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)<!>
foo(l4@ <!ARGUMENT_TYPE_MISMATCH!>""<!>)
foo(<!REDUNDANT_LABEL_WARNING!>l4@<!> <!ARGUMENT_TYPE_MISMATCH!>""<!>)
foo((<!ARGUMENT_TYPE_MISMATCH!>""<!>))
foo(checkSubtype<Int>(<!ARGUMENT_TYPE_MISMATCH!>""<!>))
foo(<!ARGUMENT_TYPE_MISMATCH!>checkSubtype<Long>(<!ARGUMENT_TYPE_MISMATCH!>""<!>)<!>)
@@ -1,3 +0,0 @@
fun f(s : String?) : Boolean {
return foo@(s?.equals("a"))!!
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
fun f(s : String?) : Boolean {
return <!REDUNDANT_LABEL_WARNING!>foo@<!>(s?.equals("a"))!!
}