diff --git a/crates/ra_hir_def/src/body/lower.rs b/crates/ra_hir_def/src/body/lower.rs index 25e29b7cde..ef1c0df014 100644 --- a/crates/ra_hir_def/src/body/lower.rs +++ b/crates/ra_hir_def/src/body/lower.rs @@ -786,7 +786,6 @@ impl ExprCollector<'_> { ast::Pat::PlaceholderPat(_) => Pat::Wild, ast::Pat::RecordPat(p) => { let path = p.path().and_then(|path| self.expander.parse_path(path)); - let args: Vec<_> = p .record_pat_field_list() .expect("every struct should have a field list") diff --git a/crates/ra_syntax/src/ast/generated/nodes.rs b/crates/ra_syntax/src/ast/generated/nodes.rs index 7708ae8064..713aebcfa1 100644 --- a/crates/ra_syntax/src/ast/generated/nodes.rs +++ b/crates/ra_syntax/src/ast/generated/nodes.rs @@ -1128,7 +1128,7 @@ pub struct BoxPat { } impl BoxPat { pub fn box_token(&self) -> Option { support::token(&self.syntax, T![box]) } - pub fn path(&self) -> Option { support::child(&self.syntax) } + pub fn pat(&self) -> Option { support::child(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct DotDotPat { diff --git a/xtask/src/codegen/rust.ungram b/xtask/src/codegen/rust.ungram index 6436688636..cb8a307fe7 100644 --- a/xtask/src/codegen/rust.ungram +++ b/xtask/src/codegen/rust.ungram @@ -516,8 +516,8 @@ Pat = LiteralPat = Literal -PathPat = - Path +BindPat = + Attr* 'ref'? 'mut'? Name ('@' Pat)? PlaceholderPat = '_' @@ -540,29 +540,29 @@ RecordPatFieldList = RecordPatField = Attr* (NameRef ':')? Pat -OrPat = - Pat* +TupleStructPat = + Path '(' args:(Pat (',' Pat)* ','?)? ')' + +TuplePat = + '(' args:(Pat (',' Pat)* ','?)? ')' ParenPat = '(' Pat ')' -BoxPat = - 'box' Path +SlicePat = + '[' args:(Pat (',' Pat)* ','?)? ']' -BindPat = - Attr* 'ref'? 'mut'? Name ('@' Pat)? +PathPat = + Path + +OrPat = + (Pat ('|' Pat)* '|'?) + +BoxPat = + 'box' Pat DotDotPat = '..' -SlicePat = - '[' args:Pat* ']' - MacroPat = MacroCall - -TupleStructPat = - Path '(' args:Pat* ')' - -TuplePat = - '(' args:Pat* ')'