diff options
| author | bors <bors@rust-lang.org> | 2017-10-13 17:42:25 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-10-13 17:42:25 +0000 |
| commit | 6cb49d2a3e86f0d2f220f12c59c0ebb2965ff38c (patch) | |
| tree | 601f0856be5a7da5d29c176fb415f7b803643670 /src/libsyntax/parse | |
| parent | 305e02281bf6e7a5398f93f86c901316074be0a5 (diff) | |
| parent | 8ea67902934728378acdd84a6050b9b4bed03ad5 (diff) | |
| download | rust-6cb49d2a3e86f0d2f220f12c59c0ebb2965ff38c.tar.gz rust-6cb49d2a3e86f0d2f220f12c59c0ebb2965ff38c.zip | |
Auto merge of #45261 - kennytm:rollup, r=kennytm
Rollup of 14 pull requests - Successful merges: #44855, #45110, #45122, #45133, #45173, #45178, #45189, #45203, #45209, #45221, #45236, #45240, #45245, #45253 - Failed merges:
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index ff020445715..04e6cdcfe58 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; } @@ -2960,6 +2971,7 @@ impl<'a> Parser<'a> { { // Foo<Bar<Baz<Qux, ()>>> err.help( "use `::<...>` instead of `<...>` if you meant to specify type arguments"); + err.help("or use `(...)` if you meant to specify fn arguments"); } err.emit(); } |
