diff options
| author | Igor Sadikov <igorsadikov@gmail.com> | 2019-02-05 15:21:03 -0500 |
|---|---|---|
| committer | Igor Sadikov <igorsadikov@gmail.com> | 2019-02-07 16:13:19 -0500 |
| commit | f753d304c6c5d7f2c10147d783d58db7db4ffc4c (patch) | |
| tree | 7c8babd0eee8633b80a001c2eac89a1decea5181 /src/libsyntax/parse/parser.rs | |
| parent | d1731801163df1d3a8d4ddfa68adac2ec833ef7f (diff) | |
| download | rust-f753d304c6c5d7f2c10147d783d58db7db4ffc4c.tar.gz rust-f753d304c6c5d7f2c10147d783d58db7db4ffc4c.zip | |
Suggest removing parentheses surrounding lifetimes
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index cacdab980fa..1dbe3fb7ea6 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -5371,6 +5371,7 @@ impl<'a> Parser<'a> { if is_bound_start { let lo = self.span; let has_parens = self.eat(&token::OpenDelim(token::Paren)); + let inner_lo = self.span; let question = if self.eat(&token::Question) { Some(self.prev_span) } else { None }; if self.token.is_lifetime() { if let Some(question_span) = question { @@ -5379,9 +5380,21 @@ impl<'a> Parser<'a> { } bounds.push(GenericBound::Outlives(self.expect_lifetime())); if has_parens { + let inner_span = inner_lo.to(self.prev_span); self.expect(&token::CloseDelim(token::Paren))?; - self.span_err(self.prev_span, - "parenthesized lifetime bounds are not supported"); + let mut err = self.struct_span_err( + lo.to(self.prev_span), + "parenthesized lifetime bounds are not supported" + ); + if let Ok(snippet) = self.sess.source_map().span_to_snippet(inner_span) { + err.span_suggestion_short( + lo.to(self.prev_span), + "remove the parentheses", + snippet.to_owned(), + Applicability::MachineApplicable + ); + } + err.emit(); } } else { let lifetime_defs = self.parse_late_bound_lifetime_defs()?; |
