summaryrefslogtreecommitdiffstats
path: root/tests/ui/parser/lifetime_starts_expressions.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/parser/lifetime_starts_expressions.rs')
-rw-r--r--tests/ui/parser/lifetime_starts_expressions.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/ui/parser/lifetime_starts_expressions.rs b/tests/ui/parser/lifetime_starts_expressions.rs
new file mode 100644
index 000000000..903b4de6e
--- /dev/null
+++ b/tests/ui/parser/lifetime_starts_expressions.rs
@@ -0,0 +1,39 @@
+#![allow(unused, dead_code)]
+
+fn foo() -> u32 {
+ return 'label: loop { break 'label 42; };
+}
+
+fn bar() -> u32 {
+ loop { break 'label: loop { break 'label 42; }; }
+ //~^ ERROR: parentheses are required around this expression to avoid confusion
+ //~| HELP: wrap the expression in parentheses
+}
+
+fn baz() -> u32 {
+ 'label: loop {
+ break 'label
+ //~^ WARNING: this labeled break expression is easy to confuse with an unlabeled break
+ loop { break 42; };
+ //~^ HELP: wrap this expression in parentheses
+ };
+
+ 'label2: loop {
+ break 'label2 'inner: loop { break 42; };
+ // no warnings or errors here
+ }
+}
+
+pub fn main() {
+ // Regression test for issue #86948, as resolved in #87026:
+ let a = 'first_loop: loop {
+ break 'first_loop 1;
+ };
+ let b = loop {
+ break 'inner_loop: loop {
+ //~^ ERROR: parentheses are required around this expression to avoid confusion
+ //~| HELP: wrap the expression in parentheses
+ break 'inner_loop 1;
+ };
+ };
+}