diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2019-03-08 14:35:38 -0800 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2019-03-16 17:47:00 -0700 |
| commit | 532dd4475b553212a65a52df6ff511e4822b149a (patch) | |
| tree | 74f9ccdc75041c99bbd6c86fdff745b7fa0b5b07 /src/libsyntax/parse/parser.rs | |
| parent | 7cf074a1e655ac07d04d045667278fa1a9970b93 (diff) | |
| download | rust-532dd4475b553212a65a52df6ff511e4822b149a.tar.gz rust-532dd4475b553212a65a52df6ff511e4822b149a.zip | |
Recover from missing comma between enum variants
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index aa70c54a1ef..8ce29c9f298 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -7711,11 +7711,29 @@ impl<'a> Parser<'a> { }; variants.push(respan(vlo.to(self.prev_span), vr)); - if !self.eat(&token::Comma) { break; } + if !self.eat(&token::Comma) { + if self.token.is_ident() && + !self.token.is_special_ident() && + !self.token.is_used_keyword() && + !self.token.is_unused_keyword() + { + let sp = self.sess.source_map().next_point(self.prev_span); + let mut err = self.struct_span_err(sp, "missing comma"); + err.span_suggestion_short( + sp, + "missing comma", + ",".to_owned(), + Applicability::MaybeIncorrect, + ); + err.emit(); + } else { + break; + } + } } self.expect(&token::CloseDelim(token::Brace))?; if !any_disr.is_empty() && !all_nullary { - let mut err =self.struct_span_err( + let mut err = self.struct_span_err( any_disr.clone(), "discriminator values can only be used with a field-less enum", ); |
