diff options
Diffstat (limited to 'vendor/syn/tests/test_expr.rs')
-rw-r--r-- | vendor/syn/tests/test_expr.rs | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/vendor/syn/tests/test_expr.rs b/vendor/syn/tests/test_expr.rs index 5d529bf14..2574ea548 100644 --- a/vendor/syn/tests/test_expr.rs +++ b/vendor/syn/tests/test_expr.rs @@ -1,11 +1,11 @@ -#![allow(clippy::uninlined_format_args)] +#![allow(clippy::single_element_loop, clippy::uninlined_format_args)] #[macro_use] mod macros; use proc_macro2::{Delimiter, Group, Ident, Punct, Spacing, Span, TokenStream, TokenTree}; use quote::quote; -use syn::{Expr, ExprRange}; +use syn::{Expr, ExprRange, Stmt}; #[test] fn test_expr_parse() { @@ -310,3 +310,32 @@ fn test_ranges() { syn::parse_str::<Expr>("lo...").unwrap_err(); syn::parse_str::<Expr>("lo...hi").unwrap_err(); } + +#[test] +fn test_ambiguous_label() { + for stmt in [ + quote! { + return 'label: loop { break 'label 42; }; + }, + quote! { + break ('label: loop { break 'label 42; }); + }, + quote! { + break 1 + 'label: loop { break 'label 42; }; + }, + quote! { + break 'outer 'inner: loop { break 'inner 42; }; + }, + ] { + syn::parse2::<Stmt>(stmt).unwrap(); + } + + for stmt in [ + // Parentheses required. See https://github.com/rust-lang/rust/pull/87026. + quote! { + break 'label: loop { break 'label 42; }; + }, + ] { + syn::parse2::<Stmt>(stmt).unwrap_err(); + } +} |