From a82f5fafcd181f7e74a1cf504e65534b413d7300 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Fri, 26 Mar 2021 01:48:40 -0400 Subject: [PATCH] Parse leading vert in nested patterns --- src/pat.rs | 6 +++--- tests/repo/mod.rs | 4 ---- tests/test_pat.rs | 10 +++++----- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/pat.rs b/src/pat.rs index 312d3c08de..d25843fce0 100644 --- a/src/pat.rs +++ b/src/pat.rs @@ -523,7 +523,7 @@ pub mod parsing { attrs, member, colon_token: input.parse()?, - pat: Box::new(multi_pat(input)?), + pat: Box::new(multi_pat_with_leading_vert(input)?), }); } @@ -602,7 +602,7 @@ pub mod parsing { let mut elems = Punctuated::new(); while !content.is_empty() { - let value = multi_pat(&content)?; + let value = multi_pat_with_leading_vert(&content)?; elems.push_value(value); if content.is_empty() { break; @@ -701,7 +701,7 @@ pub mod parsing { let mut elems = Punctuated::new(); while !content.is_empty() { - let value = multi_pat(&content)?; + let value = multi_pat_with_leading_vert(&content)?; elems.push_value(value); if content.is_empty() { break; diff --git a/tests/repo/mod.rs b/tests/repo/mod.rs index 9a1a291d6e..8090379e93 100644 --- a/tests/repo/mod.rs +++ b/tests/repo/mod.rs @@ -27,10 +27,6 @@ static EXCLUDE: &[&str] = &[ "src/test/ui/const-generics/defaults/pretty-printing-ast.rs", "src/test/ui/const-generics/min_const_generics/type_and_const_defaults.rs", - // TODO: leading vert in or-pattern - // https://github.com/dtolnay/syn/issues/982 - "src/test/ui/or-patterns/or-patterns-syntactic-pass.rs", - // TODO: static with omitted type // https://github.com/dtolnay/syn/issues/983 // TODO: placeholder type in type parameter position diff --git a/tests/test_pat.rs b/tests/test_pat.rs index 399de0289d..695e4736ee 100644 --- a/tests/test_pat.rs +++ b/tests/test_pat.rs @@ -31,14 +31,14 @@ fn test_leading_vert() { syn::parse_str::("fn fun2(|| A: E) {}").unwrap_err(); syn::parse_str::("let | () = ();").unwrap(); - syn::parse_str::("let (| A): E;").unwrap_err(); + syn::parse_str::("let (| A): E;").unwrap(); syn::parse_str::("let (|| A): (E);").unwrap_err(); - syn::parse_str::("let (| A,): (E,);").unwrap_err(); - syn::parse_str::("let [| A]: [E; 1];").unwrap_err(); + syn::parse_str::("let (| A,): (E,);").unwrap(); + syn::parse_str::("let [| A]: [E; 1];").unwrap(); syn::parse_str::("let [|| A]: [E; 1];").unwrap_err(); - syn::parse_str::("let TS(| A): TS;").unwrap_err(); + syn::parse_str::("let TS(| A): TS;").unwrap(); syn::parse_str::("let TS(|| A): TS;").unwrap_err(); - syn::parse_str::("let NS { f: | A }: NS;").unwrap_err(); + syn::parse_str::("let NS { f: | A }: NS;").unwrap(); syn::parse_str::("let NS { f: || A }: NS;").unwrap_err(); }