summary refs log tree commit diff
path: root/src/test/ui/error-codes
diff options
context:
space:
mode:
authorDavid Wood <david@davidtw.co>2020-06-25 15:16:38 +0100
committerDavid Wood <david@davidtw.co>2020-07-02 13:48:32 +0100
commitcb541dc12cdf2ba14a8f5d210ac7a6b1efa69c22 (patch)
treeffa00e1d79b5033bdb8e4aa51a92726e942842a1 /src/test/ui/error-codes
parentb7856f695d65a8ebc846754f97d15814bcb1c244 (diff)
downloadrust-cb541dc12cdf2ba14a8f5d210ac7a6b1efa69c22.tar.gz
rust-cb541dc12cdf2ba14a8f5d210ac7a6b1efa69c22.zip
resolve: disallow label use through closure/async
This commit modifies resolve to disallow `break`/`continue` to labels
through closures or async blocks. This doesn't make sense and should
have been prohibited anyway.

Signed-off-by: David Wood <david@davidtw.co>
Diffstat (limited to 'src/test/ui/error-codes')
-rw-r--r--src/test/ui/error-codes/E0767.rs7
-rw-r--r--src/test/ui/error-codes/E0767.stderr14
2 files changed, 21 insertions, 0 deletions
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`.