From fa5a3c35dcda3c82d0c10837cdcbf747e833eabd Mon Sep 17 00:00:00 2001 From: Matthew Jasper Date: Sun, 9 Feb 2020 13:19:06 +0000 Subject: Don't parse `mut a @ b` as `mut a @ mut b` --- src/librustc_parse/parser/pat.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/librustc_parse') diff --git a/src/librustc_parse/parser/pat.rs b/src/librustc_parse/parser/pat.rs index e07b0733739..985185230f2 100644 --- a/src/librustc_parse/parser/pat.rs +++ b/src/librustc_parse/parser/pat.rs @@ -542,11 +542,14 @@ impl<'a> Parser<'a> { } fn visit_pat(&mut self, pat: &mut P) { - if let PatKind::Ident(BindingMode::ByValue(ref mut m @ Mutability::Not), ..) = - pat.kind - { - *m = Mutability::Mut; + if let PatKind::Ident(ref mut bm, ..) = pat.kind { + if let BindingMode::ByValue(ref mut m @ Mutability::Not) = bm { + *m = Mutability::Mut; + } self.0 = true; + // Don't recurse into the subpattern, mut on the outer + // binding doesn't affect the inner bindings. + return; } noop_visit_pat(pat, self); } -- cgit 1.4.1-3-g733a5