Skip to content

Commit 0f27412

Browse files
committed
Add test case for shadowed labels, with the inner broken multiple times
1 parent acd6ab8 commit 0f27412

File tree

2 files changed

+37
-8
lines changed

2 files changed

+37
-8
lines changed

src/test/ui/lint/unused_label.rs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,27 +33,41 @@ fn main() {
3333
break 'used_loop_label;
3434
}
3535

36-
'used_loop_label_outer_1: loop {
37-
'used_loop_label_inner_1: loop {
36+
'used_loop_label_outer_1: for _ in 0..10 {
37+
'used_loop_label_inner_1: for _ in 0..10 {
3838
break 'used_loop_label_inner_1;
3939
}
4040
break 'used_loop_label_outer_1;
4141
}
4242

43-
'used_loop_label_outer_2: loop {
44-
'unused_loop_label_inner_2: loop {
43+
'used_loop_label_outer_2: for _ in 0..10 {
44+
'unused_loop_label_inner_2: for _ in 0..10 {
4545
//~^ WARN unused label
4646
break 'used_loop_label_outer_2;
4747
}
4848
}
4949

50-
'unused_loop_label_outer_3: loop {
50+
'unused_loop_label_outer_3: for _ in 0..10 {
5151
//~^ WARN unused label
52-
'used_loop_label_inner_3: loop {
52+
'used_loop_label_inner_3: for _ in 0..10 {
5353
break 'used_loop_label_inner_3;
5454
}
5555
}
5656

57+
// Test breaking many times with the same inner label doesn't break the
58+
// warning on the outer label
59+
'many_used_shadowed: for _ in 0..10 {
60+
//~^ WARN unused label
61+
'many_used_shadowed: for _ in 0..10 {
62+
//~^ WARN label name `'many_used_shadowed` shadows a label name that is already in scope
63+
if 1 % 2 == 0 {
64+
break 'many_used_shadowed;
65+
} else {
66+
break 'many_used_shadowed;
67+
}
68+
}
69+
}
70+
5771
// This is diverging, so put it at the end so we don't get
5872
// unreachable_code errors everywhere else
5973
'unused_loop_label: loop {

src/test/ui/lint/unused_label.stderr

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,33 @@ LL | 'unused_for_label: for _ in 0..10 {
2121
warning: unused label
2222
--> $DIR/unused_label.rs:44:9
2323
|
24-
LL | 'unused_loop_label_inner_2: loop {
24+
LL | 'unused_loop_label_inner_2: for _ in 0..10 {
2525
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
2626

2727
warning: unused label
2828
--> $DIR/unused_label.rs:50:5
2929
|
30-
LL | 'unused_loop_label_outer_3: loop {
30+
LL | 'unused_loop_label_outer_3: for _ in 0..10 {
3131
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
3232

3333
warning: unused label
3434
--> $DIR/unused_label.rs:59:5
3535
|
36+
LL | 'many_used_shadowed: for _ in 0..10 {
37+
| ^^^^^^^^^^^^^^^^^^^
38+
39+
warning: unused label
40+
--> $DIR/unused_label.rs:73:5
41+
|
3642
LL | 'unused_loop_label: loop {
3743
| ^^^^^^^^^^^^^^^^^^
3844

45+
warning: label name `'many_used_shadowed` shadows a label name that is already in scope
46+
--> $DIR/unused_label.rs:61:9
47+
|
48+
LL | 'many_used_shadowed: for _ in 0..10 {
49+
| ------------------- first declared here
50+
LL | //~^ WARN unused label
51+
LL | 'many_used_shadowed: for _ in 0..10 {
52+
| ^^^^^^^^^^^^^^^^^^^ lifetime 'many_used_shadowed already in scope
53+

0 commit comments

Comments
 (0)