Add test case for shadowed labels, with the inner broken multiple times

This commit is contained in:
Kyle Stachowicz 2018-05-15 20:17:20 -07:00
parent acd6ab8f0f
commit 0f274122ee
2 changed files with 37 additions and 8 deletions

View file

@ -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 {

View file

@ -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