about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/break-outside-loop.rs4
-rw-r--r--src/test/ui/break-outside-loop.stderr15
-rw-r--r--src/test/ui/error-codes/E0767.rs7
-rw-r--r--src/test/ui/error-codes/E0767.stderr14
-rw-r--r--src/test/ui/issues/issue-62480.rs4
-rw-r--r--src/test/ui/issues/issue-62480.stderr20
-rw-r--r--src/test/ui/issues/issue-66702-break-outside-loop-val.rs4
-rw-r--r--src/test/ui/issues/issue-66702-break-outside-loop-val.stderr15
-rw-r--r--src/test/ui/issues/issue-73541-1.rs12
-rw-r--r--src/test/ui/issues/issue-73541-1.stderr14
-rw-r--r--src/test/ui/issues/issue-73541-2.rs20
-rw-r--r--src/test/ui/issues/issue-73541-2.stderr18
-rw-r--r--src/test/ui/issues/issue-73541-3.rs9
-rw-r--r--src/test/ui/issues/issue-73541-3.stderr12
-rw-r--r--src/test/ui/issues/issue-73541.rs9
-rw-r--r--src/test/ui/issues/issue-73541.stderr14
-rw-r--r--src/test/ui/resolve/resolve-label.rs2
-rw-r--r--src/test/ui/resolve/resolve-label.stderr11
-rw-r--r--src/test/ui/suggestions/suggest-labels.stderr30
19 files changed, 205 insertions, 29 deletions
diff --git a/src/test/ui/break-outside-loop.rs b/src/test/ui/break-outside-loop.rs
index a6f9d0423d0..26769b30dd5 100644
--- a/src/test/ui/break-outside-loop.rs
+++ b/src/test/ui/break-outside-loop.rs
@@ -27,7 +27,9 @@ fn main() {
     // not the `loop`, which failed in the call to `find_breakable`. (#65383)
     'lab: loop {
         || {
-            break 'lab; //~ ERROR `break` inside of a closure
+            break 'lab;
+            //~^ ERROR use of unreachable label `'lab`
+            //~| ERROR `break` inside of a closure
         };
     }
 }
diff --git a/src/test/ui/break-outside-loop.stderr b/src/test/ui/break-outside-loop.stderr
index 8e300fd848d..287bf9af62e 100644
--- a/src/test/ui/break-outside-loop.stderr
+++ b/src/test/ui/break-outside-loop.stderr
@@ -1,3 +1,14 @@
+error[E0767]: use of unreachable label `'lab`
+  --> $DIR/break-outside-loop.rs:30:19
+   |
+LL |     'lab: loop {
+   |     ---- unreachable label defined here
+LL |         || {
+LL |             break 'lab;
+   |                   ^^^^ unreachable label `'lab`
+   |
+   = note: labels are unreachable through functions, closures, async blocks and modules
+
 error[E0268]: `break` outside of a loop
   --> $DIR/break-outside-loop.rs:10:15
    |
@@ -41,7 +52,7 @@ LL |         || {
 LL |             break 'lab;
    |             ^^^^^^^^^^ cannot `break` inside of a closure
 
-error: aborting due to 6 previous errors
+error: aborting due to 7 previous errors
 
-Some errors have detailed explanations: E0267, E0268.
+Some errors have detailed explanations: E0267, E0268, E0767.
 For more information about an error, try `rustc --explain E0267`.
diff --git a/src/test/ui/error-codes/E0767.rs b/src/test/ui/error-codes/E0767.rs
new file mode 100644
index 00000000000..6c6cb746e6c
--- /dev/null
+++ b/src/test/ui/error-codes/E0767.rs
@@ -0,0 +1,7 @@
+fn main () {
+    'a: loop {
+        || {
+            loop { break 'a; } //~ ERROR E0767
+        }
+    }
+}
diff --git a/src/test/ui/error-codes/E0767.stderr b/src/test/ui/error-codes/E0767.stderr
new file mode 100644
index 00000000000..2429823306b
--- /dev/null
+++ b/src/test/ui/error-codes/E0767.stderr
@@ -0,0 +1,14 @@
+error[E0767]: use of unreachable label `'a`
+  --> $DIR/E0767.rs:4:26
+   |
+LL |     'a: loop {
+   |     -- unreachable label defined here
+LL |         || {
+LL |             loop { break 'a; }
+   |                          ^^ unreachable label `'a`
+   |
+   = note: labels are unreachable through functions, closures, async blocks and modules
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0767`.
diff --git a/src/test/ui/issues/issue-62480.rs b/src/test/ui/issues/issue-62480.rs
index bc3e6c69a60..5c3be3e64ee 100644
--- a/src/test/ui/issues/issue-62480.rs
+++ b/src/test/ui/issues/issue-62480.rs
@@ -5,6 +5,8 @@ fn main() {
     // `propagate_through_expr` would be the closure and not the `loop`, which wouldn't be found in
     // `self.break_ln`. (#62480)
     'a: {
-        || break 'a //~ ERROR `break` to unknown label
+        || break 'a
+        //~^ ERROR use of unreachable label `'a`
+        //~| ERROR `break` inside of a closure
     }
 }
diff --git a/src/test/ui/issues/issue-62480.stderr b/src/test/ui/issues/issue-62480.stderr
index de8451ad7df..17085ef908b 100644
--- a/src/test/ui/issues/issue-62480.stderr
+++ b/src/test/ui/issues/issue-62480.stderr
@@ -1,8 +1,22 @@
-error: `break` to unknown label
+error[E0767]: use of unreachable label `'a`
+  --> $DIR/issue-62480.rs:8:18
+   |
+LL |     'a: {
+   |     -- unreachable label defined here
+LL |         || break 'a
+   |                  ^^ unreachable label `'a`
+   |
+   = note: labels are unreachable through functions, closures, async blocks and modules
+
+error[E0267]: `break` inside of a closure
   --> $DIR/issue-62480.rs:8:12
    |
 LL |         || break 'a
-   |            ^^^^^^^^
+   |         -- ^^^^^^^^ cannot `break` inside of a closure
+   |         |
+   |         enclosing closure
 
-error: aborting due to previous error
+error: aborting due to 2 previous errors
 
+Some errors have detailed explanations: E0267, E0767.
+For more information about an error, try `rustc --explain E0267`.
diff --git a/src/test/ui/issues/issue-66702-break-outside-loop-val.rs b/src/test/ui/issues/issue-66702-break-outside-loop-val.rs
index bd3c00d2621..05b86cbbf8f 100644
--- a/src/test/ui/issues/issue-66702-break-outside-loop-val.rs
+++ b/src/test/ui/issues/issue-66702-break-outside-loop-val.rs
@@ -2,6 +2,8 @@
 
 fn main() {
     'some_label: loop {
-        || break 'some_label (); //~ ERROR: `break` inside of a closure
+        || break 'some_label ();
+        //~^ ERROR: use of unreachable label `'some_label`
+        //~| ERROR: `break` inside of a closure
     }
 }
diff --git a/src/test/ui/issues/issue-66702-break-outside-loop-val.stderr b/src/test/ui/issues/issue-66702-break-outside-loop-val.stderr
index 83bde9775b2..f92ede311af 100644
--- a/src/test/ui/issues/issue-66702-break-outside-loop-val.stderr
+++ b/src/test/ui/issues/issue-66702-break-outside-loop-val.stderr
@@ -1,3 +1,13 @@
+error[E0767]: use of unreachable label `'some_label`
+  --> $DIR/issue-66702-break-outside-loop-val.rs:5:18
+   |
+LL |     'some_label: loop {
+   |     ----------- unreachable label defined here
+LL |         || break 'some_label ();
+   |                  ^^^^^^^^^^^ unreachable label `'some_label`
+   |
+   = note: labels are unreachable through functions, closures, async blocks and modules
+
 error[E0267]: `break` inside of a closure
   --> $DIR/issue-66702-break-outside-loop-val.rs:5:12
    |
@@ -6,6 +16,7 @@ LL |         || break 'some_label ();
    |         |
    |         enclosing closure
 
-error: aborting due to previous error
+error: aborting due to 2 previous errors
 
-For more information about this error, try `rustc --explain E0267`.
+Some errors have detailed explanations: E0267, E0767.
+For more information about an error, try `rustc --explain E0267`.
diff --git a/src/test/ui/issues/issue-73541-1.rs b/src/test/ui/issues/issue-73541-1.rs
new file mode 100644
index 00000000000..7fb0d6c39ff
--- /dev/null
+++ b/src/test/ui/issues/issue-73541-1.rs
@@ -0,0 +1,12 @@
+// edition:2018
+
+fn main() {
+    'a: loop {
+        async {
+            loop {
+                continue 'a
+                //~^ ERROR use of unreachable label `'a`
+            }
+        };
+    }
+}
diff --git a/src/test/ui/issues/issue-73541-1.stderr b/src/test/ui/issues/issue-73541-1.stderr
new file mode 100644
index 00000000000..80c1fdf002a
--- /dev/null
+++ b/src/test/ui/issues/issue-73541-1.stderr
@@ -0,0 +1,14 @@
+error[E0767]: use of unreachable label `'a`
+  --> $DIR/issue-73541-1.rs:7:26
+   |
+LL |     'a: loop {
+   |     -- unreachable label defined here
+...
+LL |                 continue 'a
+   |                          ^^ unreachable label `'a`
+   |
+   = note: labels are unreachable through functions, closures, async blocks and modules
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0767`.
diff --git a/src/test/ui/issues/issue-73541-2.rs b/src/test/ui/issues/issue-73541-2.rs
new file mode 100644
index 00000000000..70b4ab25376
--- /dev/null
+++ b/src/test/ui/issues/issue-73541-2.rs
@@ -0,0 +1,20 @@
+// edition:2018
+
+async fn c() {
+    'a: loop {
+        macro_rules! b {
+            () => {
+                continue 'a
+                //~^ ERROR use of unreachable label `'a`
+            }
+        }
+
+        async {
+            loop {
+                b!();
+            }
+        };
+    }
+}
+
+fn main() { }
diff --git a/src/test/ui/issues/issue-73541-2.stderr b/src/test/ui/issues/issue-73541-2.stderr
new file mode 100644
index 00000000000..75d769c4e15
--- /dev/null
+++ b/src/test/ui/issues/issue-73541-2.stderr
@@ -0,0 +1,18 @@
+error[E0767]: use of unreachable label `'a`
+  --> $DIR/issue-73541-2.rs:7:26
+   |
+LL |     'a: loop {
+   |     -- unreachable label defined here
+...
+LL |                 continue 'a
+   |                          ^^ unreachable label `'a`
+...
+LL |                 b!();
+   |                 ----- in this macro invocation
+   |
+   = note: labels are unreachable through functions, closures, async blocks and modules
+   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0767`.
diff --git a/src/test/ui/issues/issue-73541-3.rs b/src/test/ui/issues/issue-73541-3.rs
new file mode 100644
index 00000000000..02ca02da8ed
--- /dev/null
+++ b/src/test/ui/issues/issue-73541-3.rs
@@ -0,0 +1,9 @@
+fn main() {
+    'aaaaab: loop {
+        || {
+            loop { continue 'aaaaaa }
+            //~^ ERROR use of undeclared label `'aaaaaa`
+        };
+
+    }
+}
diff --git a/src/test/ui/issues/issue-73541-3.stderr b/src/test/ui/issues/issue-73541-3.stderr
new file mode 100644
index 00000000000..53487aaca99
--- /dev/null
+++ b/src/test/ui/issues/issue-73541-3.stderr
@@ -0,0 +1,12 @@
+error[E0426]: use of undeclared label `'aaaaaa`
+  --> $DIR/issue-73541-3.rs:4:29
+   |
+LL |     'aaaaab: loop {
+   |     ------- a label with a similar name exists but is unreachable
+LL |         || {
+LL |             loop { continue 'aaaaaa }
+   |                             ^^^^^^^ undeclared label `'aaaaaa`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0426`.
diff --git a/src/test/ui/issues/issue-73541.rs b/src/test/ui/issues/issue-73541.rs
new file mode 100644
index 00000000000..399a07cd3fc
--- /dev/null
+++ b/src/test/ui/issues/issue-73541.rs
@@ -0,0 +1,9 @@
+fn main() {
+    'a: loop {
+        || {
+            loop { continue 'a }
+            //~^ ERROR use of unreachable label `'a`
+        };
+
+    }
+}
diff --git a/src/test/ui/issues/issue-73541.stderr b/src/test/ui/issues/issue-73541.stderr
new file mode 100644
index 00000000000..4bb466ff16c
--- /dev/null
+++ b/src/test/ui/issues/issue-73541.stderr
@@ -0,0 +1,14 @@
+error[E0767]: use of unreachable label `'a`
+  --> $DIR/issue-73541.rs:4:29
+   |
+LL |     'a: loop {
+   |     -- unreachable label defined here
+LL |         || {
+LL |             loop { continue 'a }
+   |                             ^^ unreachable label `'a`
+   |
+   = note: labels are unreachable through functions, closures, async blocks and modules
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0767`.
diff --git a/src/test/ui/resolve/resolve-label.rs b/src/test/ui/resolve/resolve-label.rs
index 965ee450104..ac5410cd355 100644
--- a/src/test/ui/resolve/resolve-label.rs
+++ b/src/test/ui/resolve/resolve-label.rs
@@ -2,7 +2,7 @@ fn f() {
     'l: loop {
         fn g() {
             loop {
-                break 'l; //~ ERROR use of undeclared label
+                break 'l; //~ ERROR use of unreachable label
             }
         }
     }
diff --git a/src/test/ui/resolve/resolve-label.stderr b/src/test/ui/resolve/resolve-label.stderr
index 72a8e443bac..5729348ef21 100644
--- a/src/test/ui/resolve/resolve-label.stderr
+++ b/src/test/ui/resolve/resolve-label.stderr
@@ -1,9 +1,14 @@
-error[E0426]: use of undeclared label `'l`
+error[E0767]: use of unreachable label `'l`
   --> $DIR/resolve-label.rs:5:23
    |
+LL |     'l: loop {
+   |     -- unreachable label defined here
+...
 LL |                 break 'l;
-   |                       ^^ undeclared label `'l`
+   |                       ^^ unreachable label `'l`
+   |
+   = note: labels are unreachable through functions, closures, async blocks and modules
 
 error: aborting due to previous error
 
-For more information about this error, try `rustc --explain E0426`.
+For more information about this error, try `rustc --explain E0767`.
diff --git a/src/test/ui/suggestions/suggest-labels.stderr b/src/test/ui/suggestions/suggest-labels.stderr
index 079821e6490..aac6515b527 100644
--- a/src/test/ui/suggestions/suggest-labels.stderr
+++ b/src/test/ui/suggestions/suggest-labels.stderr
@@ -1,35 +1,35 @@
 error[E0426]: use of undeclared label `'fo`
   --> $DIR/suggest-labels.rs:4:15
    |
+LL |     'foo: loop {
+   |     ---- a label with a similar name is reachable
 LL |         break 'fo;
    |               ^^^
-   |
-help: a label with a similar name exists in this scope
-   |
-LL |         break 'foo;
-   |               ^^^^
+   |               |
+   |               undeclared label `'fo`
+   |               help: try using similarly named label: `'foo`
 
 error[E0426]: use of undeclared label `'bor`
   --> $DIR/suggest-labels.rs:8:18
    |
+LL |     'bar: loop {
+   |     ---- a label with a similar name is reachable
 LL |         continue 'bor;
    |                  ^^^^
-   |
-help: a label with a similar name exists in this scope
-   |
-LL |         continue 'bar;
-   |                  ^^^^
+   |                  |
+   |                  undeclared label `'bor`
+   |                  help: try using similarly named label: `'bar`
 
 error[E0426]: use of undeclared label `'longlable`
   --> $DIR/suggest-labels.rs:13:19
    |
+LL |         'longlabel1: loop {
+   |         ----------- a label with a similar name is reachable
 LL |             break 'longlable;
    |                   ^^^^^^^^^^
-   |
-help: a label with a similar name exists in this scope
-   |
-LL |             break 'longlabel1;
-   |                   ^^^^^^^^^^^
+   |                   |
+   |                   undeclared label `'longlable`
+   |                   help: try using similarly named label: `'longlabel1`
 
 error: aborting due to 3 previous errors