diff --git a/src/test/ui/lint/unused_label.rs b/src/test/ui/lint/unused_label.rs index ceb70fc542dc..f19b793546eb 100644 --- a/src/test/ui/lint/unused_label.rs +++ b/src/test/ui/lint/unused_label.rs @@ -33,27 +33,41 @@ fn main() { break 'used_loop_label; } - 'used_loop_label_outer_1: loop { - 'used_loop_label_inner_1: loop { + 'used_loop_label_outer_1: for _ in 0..10 { + 'used_loop_label_inner_1: for _ in 0..10 { break 'used_loop_label_inner_1; } break 'used_loop_label_outer_1; } - 'used_loop_label_outer_2: loop { - 'unused_loop_label_inner_2: loop { + 'used_loop_label_outer_2: for _ in 0..10 { + 'unused_loop_label_inner_2: for _ in 0..10 { //~^ WARN unused label break 'used_loop_label_outer_2; } } - 'unused_loop_label_outer_3: loop { + 'unused_loop_label_outer_3: for _ in 0..10 { //~^ WARN unused label - 'used_loop_label_inner_3: loop { + 'used_loop_label_inner_3: for _ in 0..10 { break 'used_loop_label_inner_3; } } + // Test breaking many times with the same inner label doesn't break the + // warning on the outer label + 'many_used_shadowed: for _ in 0..10 { + //~^ WARN unused label + 'many_used_shadowed: for _ in 0..10 { + //~^ WARN label name `'many_used_shadowed` shadows a label name that is already in scope + if 1 % 2 == 0 { + break 'many_used_shadowed; + } else { + break 'many_used_shadowed; + } + } + } + // This is diverging, so put it at the end so we don't get // unreachable_code errors everywhere else 'unused_loop_label: loop { diff --git a/src/test/ui/lint/unused_label.stderr b/src/test/ui/lint/unused_label.stderr index 31f78b28ef5e..e78df6779421 100644 --- a/src/test/ui/lint/unused_label.stderr +++ b/src/test/ui/lint/unused_label.stderr @@ -21,18 +21,33 @@ LL | 'unused_for_label: for _ in 0..10 { warning: unused label --> $DIR/unused_label.rs:44:9 | -LL | 'unused_loop_label_inner_2: loop { +LL | 'unused_loop_label_inner_2: for _ in 0..10 { | ^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused label --> $DIR/unused_label.rs:50:5 | -LL | 'unused_loop_label_outer_3: loop { +LL | 'unused_loop_label_outer_3: for _ in 0..10 { | ^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: unused label --> $DIR/unused_label.rs:59:5 | +LL | 'many_used_shadowed: for _ in 0..10 { + | ^^^^^^^^^^^^^^^^^^^ + +warning: unused label + --> $DIR/unused_label.rs:73:5 + | LL | 'unused_loop_label: loop { | ^^^^^^^^^^^^^^^^^^ +warning: label name `'many_used_shadowed` shadows a label name that is already in scope + --> $DIR/unused_label.rs:61:9 + | +LL | 'many_used_shadowed: for _ in 0..10 { + | ------------------- first declared here +LL | //~^ WARN unused label +LL | 'many_used_shadowed: for _ in 0..10 { + | ^^^^^^^^^^^^^^^^^^^ lifetime 'many_used_shadowed already in scope +