Tweak incorrect escaped char diagnostic

This commit is contained in:
Esteban Küber 2019-03-20 11:45:25 -07:00
parent 7cf074a1e6
commit a8120d660a
10 changed files with 51 additions and 72 deletions

View File

@ -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

View File

@ -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)?);

View File

@ -2,13 +2,13 @@ error: unknown byte escape: f
--> $DIR/byte-literals.rs:6:21
|
LL | static FOO: u8 = b'/f';
| ^
| ^ unknown byte escape
error: unknown byte escape: f
--> $DIR/byte-literals.rs:9:8
|
LL | b'/f';
| ^
| ^ unknown byte escape
error: invalid character in numeric character escape: Z
--> $DIR/byte-literals.rs:10:10

View File

@ -2,13 +2,13 @@ error: unknown byte escape: f
--> $DIR/byte-string-literals.rs:6:32
|
LL | static FOO: &'static [u8] = b"/f";
| ^
| ^ unknown byte escape
error: unknown byte escape: f
--> $DIR/byte-string-literals.rs:9:8
|
LL | b"/f";
| ^
| ^ unknown byte escape
error: invalid character in numeric character escape: Z
--> $DIR/byte-string-literals.rs:10:10

View File

@ -14,13 +14,9 @@ error: incorrect unicode escape sequence
--> $DIR/issue-23620-invalid-escapes.rs:10:15
|
LL | let _ = b'/u';
| ^^
| ^^ incorrect unicode escape sequence
|
help: format of unicode escape sequences is `/u{...}`
--> $DIR/issue-23620-invalid-escapes.rs:10:15
|
LL | let _ = b'/u';
| ^^
= help: format of unicode escape sequences is `/u{...}`
error: unicode escape sequences cannot be used as a byte or in a byte string
--> $DIR/issue-23620-invalid-escapes.rs:10:15
@ -80,13 +76,9 @@ error: incorrect unicode escape sequence
--> $DIR/issue-23620-invalid-escapes.rs:28:28
|
LL | let _ = b"/u{a4a4} /xf /u";
| ^^
| ^^ incorrect unicode escape sequence
|
help: format of unicode escape sequences is `/u{...}`
--> $DIR/issue-23620-invalid-escapes.rs:28:28
|
LL | let _ = b"/u{a4a4} /xf /u";
| ^^
= help: format of unicode escape sequences is `/u{...}`
error: unicode escape sequences cannot be used as a byte or in a byte string
--> $DIR/issue-23620-invalid-escapes.rs:28:28
@ -110,13 +102,9 @@ error: incorrect unicode escape sequence
--> $DIR/issue-23620-invalid-escapes.rs:34:18
|
LL | let _ = "/xf /u";
| ^^
| ^^ incorrect unicode escape sequence
|
help: format of unicode escape sequences is `/u{...}`
--> $DIR/issue-23620-invalid-escapes.rs:34:18
|
LL | let _ = "/xf /u";
| ^^
= help: format of unicode escape sequences is `/u{...}`
error: incorrect unicode escape sequence
--> $DIR/issue-23620-invalid-escapes.rs:39:14

View File

@ -14,13 +14,13 @@ error: unknown character escape: /u{25cf}
--> $DIR/lex-bad-char-literals-1.rs:11:7
|
LL | '/●'
| ^
| ^ unknown character escape
error: unknown character escape: /u{25cf}
--> $DIR/lex-bad-char-literals-1.rs:15:7
|
LL | "/●"
| ^
| ^ unknown character escape
error: aborting due to 4 previous errors

View File

@ -38,13 +38,9 @@ error: unknown character escape: /r
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:27:19
|
LL | let _s = "foo/ bar";
| ^
| ^ unknown character escape
|
help: this is an isolated carriage return; consider checking your editor and version control settings
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:27:19
|
LL | let _s = "foo/ bar";
| ^
= help: this is an isolated carriage return; consider checking your editor and version control settings
error: aborting due to 7 previous errors

View File

@ -2,7 +2,9 @@ error: `..` can only be used once per tuple or tuple struct pattern
--> $DIR/pat-tuple-3.rs:3:19
|
LL | (.., pat, ..) => {}
| ^^ can only be used once per pattern
| -- ^^ can only be used once per pattern
| |
| previously present here
error: aborting due to previous error

View File

@ -2,13 +2,9 @@ error: unknown character escape: /r
--> $DIR/trailing-carriage-return-in-string.rs:10:25
|
LL | let bad = "This is / a test";
| ^
| ^ unknown character escape
|
help: this is an isolated carriage return; consider checking your editor and version control settings
--> $DIR/trailing-carriage-return-in-string.rs:10:25
|
LL | let bad = "This is / a test";
| ^
= help: this is an isolated carriage return; consider checking your editor and version control settings
error: aborting due to previous error

View File

@ -2,25 +2,17 @@ error: unknown character escape: {
--> $DIR/wrong-escape-of-curly-braces.rs:3:17
|
LL | let bad = "/{it is wrong/}";
| ^
| ^ unknown character escape
|
help: if used in a formatting string, curly braces are escaped with `{{` and `}}`
--> $DIR/wrong-escape-of-curly-braces.rs:3:17
|
LL | let bad = "/{it is wrong/}";
| ^
= help: if used in a formatting string, curly braces are escaped with `{{` and `}}`
error: unknown character escape: }
--> $DIR/wrong-escape-of-curly-braces.rs:3:30
|
LL | let bad = "/{it is wrong/}";
| ^
| ^ unknown character escape
|
help: if used in a formatting string, curly braces are escaped with `{{` and `}}`
--> $DIR/wrong-escape-of-curly-braces.rs:3:30
|
LL | let bad = "/{it is wrong/}";
| ^
= help: if used in a formatting string, curly braces are escaped with `{{` and `}}`
error: aborting due to 2 previous errors