about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2019-03-26 12:32:32 -0700
committerEsteban Küber <esteban@kuber.com.ar>2019-03-26 12:32:32 -0700
commit8d1cc72cf9fca507f4e14fad88f7269594305846 (patch)
tree77a8857259f71cf64c06b1ae3b1b22064782077c
parent1bb3694b1a6368f456c2e62cf234a332a21df2a0 (diff)
downloadrust-8d1cc72cf9fca507f4e14fad88f7269594305846.tar.gz
rust-8d1cc72cf9fca507f4e14fad88f7269594305846.zip
Add specific message for tuple struct invoked with suffixed numeric field name
-rw-r--r--src/libsyntax/parse/parser.rs3
-rw-r--r--src/test/ui/parser/issue-59418.rs6
-rw-r--r--src/test/ui/parser/issue-59418.stderr14
3 files changed, 21 insertions, 2 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index bb3dc8edfb0..71dde91e654 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -2491,7 +2491,8 @@ impl<'a> Parser<'a> {
     }
 
     fn parse_field_name(&mut self) -> PResult<'a, Ident> {
-        if let token::Literal(token::Integer(name), None) = self.token {
+        if let token::Literal(token::Integer(name), suffix) = self.token {
+            self.expect_no_suffix(self.span, "a tuple index", suffix);
             self.bump();
             Ok(Ident::new(name, self.prev_span))
         } else {
diff --git a/src/test/ui/parser/issue-59418.rs b/src/test/ui/parser/issue-59418.rs
index a37af2180bf..0fa191d4a7e 100644
--- a/src/test/ui/parser/issue-59418.rs
+++ b/src/test/ui/parser/issue-59418.rs
@@ -9,4 +9,10 @@ fn main() {
     let d = c.1suffix;
     //~^ ERROR suffixes on a tuple index are invalid
     println!("{}", d);
+    let s = X { 0suffix: 0, 1: 1, 2: 2 };
+    //~^ ERROR suffixes on a tuple index are invalid
+    match s {
+        X { 0suffix: _, .. } => {}
+        //~^ ERROR suffixes on a tuple index are invalid
+    }
 }
diff --git a/src/test/ui/parser/issue-59418.stderr b/src/test/ui/parser/issue-59418.stderr
index ca7d4cfda72..347051e9f92 100644
--- a/src/test/ui/parser/issue-59418.stderr
+++ b/src/test/ui/parser/issue-59418.stderr
@@ -10,5 +10,17 @@ error: suffixes on a tuple index are invalid
 LL |     let d = c.1suffix;
    |               ^^^^^^^ invalid suffix `suffix`
 
-error: aborting due to 2 previous errors
+error: suffixes on a tuple index are invalid
+  --> $DIR/issue-59418.rs:12:17
+   |
+LL |     let s = X { 0suffix: 0, 1: 1, 2: 2 };
+   |                 ^^^^^^^ invalid suffix `suffix`
+
+error: suffixes on a tuple index are invalid
+  --> $DIR/issue-59418.rs:15:13
+   |
+LL |         X { 0suffix: _, .. } => {}
+   |             ^^^^^^^ invalid suffix `suffix`
+
+error: aborting due to 4 previous errors