diff --git a/src/parse/mod.rs b/src/parse/mod.rs index cf10ea3807..e9abe3702b 100644 --- a/src/parse/mod.rs +++ b/src/parse/mod.rs @@ -763,6 +763,7 @@ fn parse_closure_param<'a>( fn loc_pattern<'a>(min_indent: u16) -> impl Parser<'a, Located>> { one_of!( + loc_parenthetical_pattern(min_indent), loc!(underscore_pattern()), loc_tag_pattern(min_indent), loc!(ident_pattern()), @@ -772,6 +773,14 @@ fn loc_pattern<'a>(min_indent: u16) -> impl Parser<'a, Located>> { ) } +fn loc_parenthetical_pattern<'a>(min_indent: u16) -> impl Parser<'a, Located>> { + between!( + char('('), + move |arena, state| loc_pattern(min_indent).parse(arena, state), + char(')') + ) +} + fn int_pattern<'a>() -> impl Parser<'a, Pattern<'a>> { map_with_arena!(number_literal(), |arena, expr| { expr_to_pattern(arena, &expr).unwrap()