]> git.lizzy.rs Git - rust.git/commitdiff
Address comments in lowering + parsing.
authorMazdak Farrokhzad <twingoow@gmail.com>
Wed, 24 Jul 2019 00:00:46 +0000 (02:00 +0200)
committerMazdak Farrokhzad <twingoow@gmail.com>
Sun, 28 Jul 2019 04:53:39 +0000 (06:53 +0200)
src/librustc/hir/lowering.rs
src/libsyntax/parse/parser.rs

index 78596a5b405732ee5e03670a8b77fe11f5dbb7ee..bc2c835e2105049db922a305a76268967eaf673c 100644 (file)
@@ -4185,7 +4185,7 @@ fn lower_pat(&mut self, p: &Pat) -> P<hir::Pat> {
                     ParamMode::Optional,
                     ImplTraitContext::disallowed(),
                 );
-                let (pats, ddpos) = self.lower_pat_tuple(&*pats, "tuple struct");
+                let (pats, ddpos) = self.lower_pat_tuple(pats, "tuple struct");
                 hir::PatKind::TupleStruct(qpath, pats, ddpos)
             }
             PatKind::Path(ref qself, ref path) => {
@@ -4224,7 +4224,7 @@ fn lower_pat(&mut self, p: &Pat) -> P<hir::Pat> {
                 hir::PatKind::Struct(qpath, fs, etc)
             }
             PatKind::Tuple(ref pats) => {
-                let (pats, ddpos) = self.lower_pat_tuple(&*pats, "tuple");
+                let (pats, ddpos) = self.lower_pat_tuple(pats, "tuple");
                 hir::PatKind::Tuple(pats, ddpos)
             }
             PatKind::Box(ref inner) => hir::PatKind::Box(self.lower_pat(inner)),
@@ -4245,7 +4245,7 @@ fn lower_pat(&mut self, p: &Pat) -> P<hir::Pat> {
             PatKind::Mac(_) => panic!("Shouldn't exist here"),
         };
 
-        self.pat_bound(p, node)
+        self.pat_with_node_id_of(p, node)
     }
 
     fn lower_pat_tuple(
@@ -4291,14 +4291,14 @@ fn lower_pat_slice(&mut self, pats: &[AstP<Pat>]) -> hir::PatKind {
             match pat.node {
                 PatKind::Rest => {
                     prev_rest_span = Some(pat.span);
-                    slice = Some(self.pat_bound_wild(pat));
+                    slice = Some(self.pat_wild_with_node_id_of(pat));
                     break;
                 },
                 PatKind::Ident(ref bm, ident, Some(ref sub)) if sub.is_rest() => {
                     prev_rest_span = Some(sub.span);
-                    let lower_sub = |this: &mut Self| Some(this.pat_bound_wild(sub));
+                    let lower_sub = |this: &mut Self| Some(this.pat_wild_with_node_id_of(sub));
                     let node = self.lower_pat_ident(pat, bm, ident, lower_sub);
-                    slice = Some(self.pat_bound(pat, node));
+                    slice = Some(self.pat_with_node_id_of(pat, node));
                     break;
                 },
                 _ => {}
@@ -4314,7 +4314,7 @@ fn lower_pat_slice(&mut self, pats: &[AstP<Pat>]) -> hir::PatKind {
                 PatKind::Rest => Some(pat.span),
                 PatKind::Ident(.., Some(ref sub)) if sub.is_rest() => {
                     // The `HirValidator` is merciless; add a `_` pattern to avoid ICEs.
-                    after.push(self.pat_bound_wild(pat));
+                    after.push(self.pat_wild_with_node_id_of(pat));
                     Some(sub.span)
                 },
                 _ => None,
@@ -4362,12 +4362,12 @@ fn lower_pat_ident(
         }
     }
 
-    fn pat_bound_wild(&mut self, p: &Pat) -> P<hir::Pat> {
-        self.pat_bound(p, hir::PatKind::Wild)
+    fn pat_wild_with_node_id_of(&mut self, p: &Pat) -> P<hir::Pat> {
+        self.pat_with_node_id_of(p, hir::PatKind::Wild)
     }
 
     /// Construct a `Pat` with the `HirId` of `p.id` lowered.
-    fn pat_bound(&mut self, p: &Pat, node: hir::PatKind) -> P<hir::Pat> {
+    fn pat_with_node_id_of(&mut self, p: &Pat, node: hir::PatKind) -> P<hir::Pat> {
         P(hir::Pat {
             hir_id: self.lower_node_id(p.id),
             node,
index 34ed7f50907b16fbf46b52184d02eb57d5f17b8f..8f8ed4111808da3a5d1424b772e2f9636f74f8ab 100644 (file)
@@ -3748,8 +3748,9 @@ fn parse_as_ident(&mut self) -> bool {
         })
     }
 
-    /// Parse a parentesized comma separated sequence of patterns until `delim` is reached.
-    fn parse_recover_pat_list(&mut self) -> PResult<'a, ()> {
+    /// Parse and throw away a parentesized comma separated
+    /// sequence of patterns until `)` is reached.
+    fn skip_pat_list(&mut self) -> PResult<'a, ()> {
         while !self.check(&token::CloseDelim(token::Paren)) {
             self.parse_pat(None)?;
             if !self.eat(&token::Comma) {
@@ -3772,7 +3773,7 @@ fn parse_top_level_pat(&mut self) -> PResult<'a, P<Pat>> {
             // later.
             let comma_span = self.token.span;
             self.bump();
-            if let Err(mut err) = self.parse_recover_pat_list() {
+            if let Err(mut err) = self.skip_pat_list() {
                 // We didn't expect this to work anyway; we just wanted
                 // to advance to the end of the comma-sequence so we know
                 // the span to suggest parenthesizing
@@ -3877,9 +3878,11 @@ fn parse_pat_with_range_pat(
                 pat = PatKind::Ref(subpat, mutbl);
             }
             token::OpenDelim(token::Paren) => {
-                // Parse `(pat, pat, pat, ...)` as tuple pattern.
+                // Parse a tuple or parenthesis pattern.
                 let (fields, trailing_comma) = self.parse_paren_comma_seq(|p| p.parse_pat(None))?;
 
+                // Here, `(pat,)` is a tuple pattern.
+                // For backward compatibility, `(..)` is a tuple pattern as well.
                 pat = if fields.len() == 1 && !(trailing_comma || fields[0].is_rest()) {
                     PatKind::Paren(fields.into_iter().nth(0).unwrap())
                 } else {