diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-03-22 19:31:34 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-03-22 19:31:34 +0100 |
| commit | 9d33d6fa4bb506abf53087dfd2be894cd3e5b915 (patch) | |
| tree | 45c3acb1aa22be304363a037496b3f68e53de8e2 /src/libsyntax/parse | |
| parent | 11429b2d1373c4a0c26ce681983cfa9aa925daaf (diff) | |
| parent | a8120d660a47559b7ae8eb798bb8f6e62d575000 (diff) | |
| download | rust-9d33d6fa4bb506abf53087dfd2be894cd3e5b915.tar.gz rust-9d33d6fa4bb506abf53087dfd2be894cd3e5b915.zip | |
Rollup merge of #59322 - estebank:diag-tweak, r=davidtwco
Tweak incorrect escaped char diagnostic
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/lexer/mod.rs | 38 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 13 |
2 files changed, 28 insertions, 23 deletions
diff --git a/src/libsyntax/parse/lexer/mod.rs b/src/libsyntax/parse/lexer/mod.rs index bcd53dbfeb2..cd4944deadb 100644 --- a/src/libsyntax/parse/lexer/mod.rs +++ b/src/libsyntax/parse/lexer/mod.rs @@ -968,9 +968,10 @@ impl<'a> StringReader<'a> { } else { let span = self.mk_sp(start, self.pos); let mut suggestion = "\\u{".to_owned(); + let msg = "incorrect unicode escape sequence"; let mut err = self.sess.span_diagnostic.struct_span_err( span, - "incorrect unicode escape sequence", + msg, ); let mut i = 0; while let (Some(ch), true) = (self.ch, i < 6) { @@ -991,8 +992,8 @@ impl<'a> StringReader<'a> { Applicability::MaybeIncorrect, ); } else { - err.span_help( - span, + err.span_label(span, msg); + err.help( "format of unicode escape sequences is `\\u{...}`", ); } @@ -1018,25 +1019,24 @@ impl<'a> StringReader<'a> { } c => { let pos = self.pos; - let mut err = self.struct_err_span_char(escaped_pos, - pos, - if ascii_only { - "unknown byte escape" - } else { - "unknown character \ - escape" - }, - c); + let msg = if ascii_only { + "unknown byte escape" + } else { + "unknown character escape" + }; + let mut err = self.struct_err_span_char(escaped_pos, pos, msg, c); + err.span_label(self.mk_sp(escaped_pos, pos), msg); if e == '\r' { - err.span_help(self.mk_sp(escaped_pos, pos), - "this is an isolated carriage return; consider \ - checking your editor and version control \ - settings"); + err.help( + "this is an isolated carriage return; consider checking \ + your editor and version control settings", + ); } if (e == '{' || e == '}') && !ascii_only { - err.span_help(self.mk_sp(escaped_pos, pos), - "if used in a formatting string, curly braces \ - are escaped with `{{` and `}}`"); + err.help( + "if used in a formatting string, curly braces are escaped \ + with `{{` and `}}`", + ); } err.emit(); false diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 648ee771ddb..5627ac3fcf2 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -4229,19 +4229,24 @@ impl<'a> Parser<'a> { fn parse_pat_list(&mut self) -> PResult<'a, (Vec<P<Pat>>, Option<usize>, bool)> { let mut fields = Vec::new(); let mut ddpos = None; + let mut prev_dd_sp = None; let mut trailing_comma = false; loop { if self.eat(&token::DotDot) { if ddpos.is_none() { ddpos = Some(fields.len()); + prev_dd_sp = Some(self.prev_span); } else { // Emit a friendly error, ignore `..` and continue parsing - self.struct_span_err( + let mut err = self.struct_span_err( self.prev_span, "`..` can only be used once per tuple or tuple struct pattern", - ) - .span_label(self.prev_span, "can only be used once per pattern") - .emit(); + ); + err.span_label(self.prev_span, "can only be used once per pattern"); + if let Some(sp) = prev_dd_sp { + err.span_label(sp, "previously present here"); + } + err.emit(); } } else if !self.check(&token::CloseDelim(token::Paren)) { fields.push(self.parse_pat(None)?); |
