diff options
| author | Badel2 <2badel2@gmail.com> | 2017-10-10 04:11:22 +0200 |
|---|---|---|
| committer | Badel2 <2badel2@gmail.com> | 2017-10-11 03:13:25 +0200 |
| commit | 72cfd209410da7f9dd09357a3361bb5b561dee33 (patch) | |
| tree | 2856d21750a4b889d16cb76ce7ebe978e4500f82 /src/libsyntax/parse | |
| parent | 0217315bf23edee385a7042b5a23b3e7e376820c (diff) | |
| download | rust-72cfd209410da7f9dd09357a3361bb5b561dee33.tar.gz rust-72cfd209410da7f9dd09357a3361bb5b561dee33.zip | |
Add error for comma after base struct field
`let x = { ..default(), } // This comma is an error`
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 978e06c75dd..c1f9b4a7a22 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -2314,6 +2314,7 @@ impl<'a> Parser<'a> { while self.token != token::CloseDelim(token::Brace) { if self.eat(&token::DotDot) { + let exp_span = self.prev_span; match self.parse_expr() { Ok(e) => { base = Some(e); @@ -2323,6 +2324,16 @@ impl<'a> Parser<'a> { self.recover_stmt(); } } + if self.token == token::Comma { + let mut err = self.sess.span_diagnostic.mut_span_err( + exp_span.to(self.prev_span), + "cannot use a comma after the base struct", + ); + err.span_suggestion_short(self.span, "remove this comma", "".to_owned()); + err.note("the base struct must always be the last field"); + err.emit(); + self.recover_stmt(); + } break; } |
