KT-22274 report warning on labels that can't be referenced

Labels are meaningful only if they can be referenced by 'break',
'continue', or 'return' expressions.
This commit is contained in:
Dmitry Petrov
2018-07-24 15:58:10 +03:00
parent 6fb913a463
commit df6d4f358a
28 changed files with 127 additions and 42 deletions
@@ -1,3 +1,3 @@
fun test() {
(d@ <!DECLARATION_IN_ILLEGAL_CONTEXT!>val <!UNUSED_VARIABLE!>bar<!> = 2<!>)
(<!REDUNDANT_LABEL_WARNING!>d@<!> <!DECLARATION_IN_ILLEGAL_CONTEXT!>val <!UNUSED_VARIABLE!>bar<!> = 2<!>)
}
@@ -5,19 +5,19 @@ package m
fun test(i: Int?) {
if (i != null) {
foo(l1@ <!DEBUG_INFO_SMARTCAST!>i<!>)
foo(<!OI;REDUNDANT_LABEL_WARNING!>l1@<!> <!DEBUG_INFO_SMARTCAST!>i<!>)
foo((<!DEBUG_INFO_SMARTCAST!>i<!>))
foo(l2@ (<!DEBUG_INFO_SMARTCAST!>i<!>))
foo((l3@ <!DEBUG_INFO_SMARTCAST!>i<!>))
foo(<!OI;REDUNDANT_LABEL_WARNING!>l2@<!> (<!DEBUG_INFO_SMARTCAST!>i<!>))
foo((<!OI;REDUNDANT_LABEL_WARNING!>l3@<!> <!DEBUG_INFO_SMARTCAST!>i<!>))
}
val a: Int = l4@ <!TYPE_MISMATCH!>""<!>
val a: Int = <!OI;REDUNDANT_LABEL_WARNING!>l4@<!> <!TYPE_MISMATCH!>""<!>
val b: Int = (<!TYPE_MISMATCH!>""<!>)
val c: Int = checkSubtype<Int>(<!TYPE_MISMATCH!>""<!>)
val d: Int = <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, TYPE_MISMATCH!>checkSubtype<Long>(<!TYPE_MISMATCH!>""<!>)<!>
foo(l4@ <!TYPE_MISMATCH!>""<!>)
foo(<!OI;REDUNDANT_LABEL_WARNING!>l4@<!> <!TYPE_MISMATCH!>""<!>)
foo((<!TYPE_MISMATCH!>""<!>))
foo(checkSubtype<Int>(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, TYPE_MISMATCH!>""<!>))
foo(<!NI;TYPE_MISMATCH, TYPE_MISMATCH!>checkSubtype<Long>(<!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, TYPE_MISMATCH!>""<!>)<!>)
@@ -1,3 +1,3 @@
fun f(s : String?) : Boolean {
return foo@(s?.equals("a"))!!
return <!REDUNDANT_LABEL_WARNING!>foo@<!>(s?.equals("a"))!!
}