diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2016-03-31 10:15:36 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2016-03-31 10:15:36 +0300 |
| commit | 1cbdf4e7d3781ac6f54840df9ee1059ea0f894d3 (patch) | |
| tree | 0d38d3902b5c0da18c2a42a62270a47753aa97e1 /src/libsyntax | |
| parent | 102a5be7126ef8f1e79086b98d1d9faf47ba8ece (diff) | |
| download | rust-1cbdf4e7d3781ac6f54840df9ee1059ea0f894d3.tar.gz rust-1cbdf4e7d3781ac6f54840df9ee1059ea0f894d3.zip | |
syntax: Extra diagnostics for `_` used in an identifier position
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 5141af6f2d1..9027a5b1074 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -574,9 +574,12 @@ impl<'a> Parser<'a> { self.bug("ident interpolation not converted to real token"); } _ => { - let token_str = self.this_token_to_string(); - Err(self.fatal(&format!("expected ident, found `{}`", - token_str))) + let mut err = self.fatal(&format!("expected identifier, found `{}`", + self.this_token_to_string())); + if self.token == token::Underscore { + err.fileline_note(self.span, "`_` is a wildcard pattern, not an identifier"); + } + Err(err) } } } @@ -3782,12 +3785,6 @@ impl<'a> Parser<'a> { fn parse_pat_ident(&mut self, binding_mode: ast::BindingMode) -> PResult<'a, PatKind> { - if !self.token.is_plain_ident() { - let span = self.span; - let tok_str = self.this_token_to_string(); - return Err(self.span_fatal(span, - &format!("expected identifier, found `{}`", tok_str))) - } let ident = self.parse_ident()?; let last_span = self.last_span; let name = codemap::Spanned{span: last_span, node: ident}; @@ -3847,9 +3844,6 @@ impl<'a> Parser<'a> { Visibility::Inherited => self.span.lo, Visibility::Public => self.last_span.lo, }; - if !self.token.is_plain_ident() { - return Err(self.fatal("expected ident")); - } let name = self.parse_ident()?; self.expect(&token::Colon)?; let ty = self.parse_ty_sum()?; |
