about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKyle Stachowicz <kylestach99@gmail.com>2018-05-15 20:17:20 -0700
committerKyle Stachowicz <kylestach99@gmail.com>2018-05-18 16:57:15 -0700
commit0f274122eef3c69c09c406dff32d695fca5509b3 (patch)
tree82d339bc69fc23fb16731e5020c495ccafaeff14
parentacd6ab8f0f00365b424ac9cd83d9d08852add0bc (diff)
downloadrust-0f274122eef3c69c09c406dff32d695fca5509b3.tar.gz
rust-0f274122eef3c69c09c406dff32d695fca5509b3.zip
Add test case for shadowed labels, with the inner broken multiple times
-rw-r--r--src/test/ui/lint/unused_label.rs26
-rw-r--r--src/test/ui/lint/unused_label.stderr19
2 files changed, 37 insertions, 8 deletions
diff --git a/src/test/ui/lint/unused_label.rs b/src/test/ui/lint/unused_label.rs
index ceb70fc542d..f19b793546e 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 31f78b28ef5..e78df677942 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
+