Add error for comma after base struct field

`let x = { ..default(), } // This comma is an error`
This commit is contained in:
Badel2
2017-10-10 04:11:22 +02:00
parent 0217315bf2
commit 72cfd20941
3 changed files with 56 additions and 0 deletions

View File

@@ -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;
}