} 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) {
Applicability::MaybeIncorrect,
);
} else {
- err.span_help(
- span,
+ err.span_label(span, msg);
+ err.help(
"format of unicode escape sequences is `\\u{...}`",
);
}
}
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
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)?);
--> $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
--> $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
--> $DIR/issue-23620-invalid-escapes.rs:10:15
|
LL | let _ = b'/u';
- | ^^
- |
-help: format of unicode escape sequences is `/u{...}`
- --> $DIR/issue-23620-invalid-escapes.rs:10:15
+ | ^^ incorrect unicode escape sequence
|
-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
--> $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
--> $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
--> $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
--> $DIR/lex-bare-cr-string-literal-doc-comment.rs:27:19
|
LL | let _s = "foo/\rbar";
- | ^
+ | ^ 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/\rbar";
- | ^
+ = help: this is an isolated carriage return; consider checking your editor and version control settings
error: aborting due to 7 previous errors
--> $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
--> $DIR/trailing-carriage-return-in-string.rs:10:25
|
LL | let bad = "This is /\r 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 /\r a test";
- | ^
+ = help: this is an isolated carriage return; consider checking your editor and version control settings
error: aborting due to previous error
--> $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