Skip to content

Improve parsing of labeled loop as value expression for break#1531

Merged
dtolnay merged 3 commits into
masterfrom
breaklabel
Nov 6, 2023
Merged

Improve parsing of labeled loop as value expression for break#1531
dtolnay merged 3 commits into
masterfrom
breaklabel

Conversation

@dtolnay

@dtolnay dtolnay commented Nov 6, 2023

Copy link
Copy Markdown
Owner

See rust-lang/rust#87026.

Before:

error: unexpected token, expected `;`
 --> dev/main.rs:9:21
  |
9 |         break 'label: loop { break 'label 42; };
  |                     ^

After:

error: parentheses required
 --> dev/main.rs:9:15
  |
9 |         break 'label: loop { break 'label 42; };
  |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    warning: for loop over a single element
       --> tests/test_expr.rs:333:5
        |
    333 | /     for stmt in [
    334 | |         // Parentheses required. See rust-lang/rust#87026.
    335 | |         quote! {
    336 | |             break 'label: loop { break 'label 42; };
    ...   |
    339 | |         syn::parse2::<Stmt>(stmt).unwrap_err();
    340 | |     }
        | |_____^
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_element_loop
        = note: `-W clippy::single-element-loop` implied by `-W clippy::all`
        = help: to override `-W clippy::all` add `#[allow(clippy::single_element_loop)]`
    help: try
        |
    333 ~     {
    334 +         let stmt = {
    335 +         let mut _s = $crate::__private::TokenStream::new();
    336 +         $crate::quote_each_token!{_s $($tt)*}
    337 +         _s
    338 +     };
    339 +         syn::parse2::<Stmt>(stmt).unwrap_err();
    340 +     }
        |
@dtolnay dtolnay merged commit 95aeeb5 into master Nov 6, 2023
@dtolnay dtolnay deleted the breaklabel branch November 6, 2023 01:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant