diff options
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/lexer/mod.rs | 13 | ||||
| -rw-r--r-- | src/libsyntax/parse/lexer/unicode_chars.rs | 4 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/libsyntax/parse/lexer/mod.rs b/src/libsyntax/parse/lexer/mod.rs index a9dd234e1ad..50a398d8c63 100644 --- a/src/libsyntax/parse/lexer/mod.rs +++ b/src/libsyntax/parse/lexer/mod.rs @@ -1075,9 +1075,16 @@ impl<'a> StringReader<'a> { self.bump(); } if self.scan_digits(10, 10) == 0 { - self.err_span_(self.pos, - self.next_pos, - "expected at least one digit in exponent") + let mut err = self.struct_span_fatal( + self.pos, self.next_pos, + "expected at least one digit in exponent" + ); + if let Some(ch) = self.ch { + // check for e.g. Unicode minus '−' (Issue #49746) + unicode_chars::check_for_substitution(self, ch, &mut err); + } + err.emit(); + FatalError.raise(); } } } diff --git a/src/libsyntax/parse/lexer/unicode_chars.rs b/src/libsyntax/parse/lexer/unicode_chars.rs index 35afe8dd56d..3c0bb82212f 100644 --- a/src/libsyntax/parse/lexer/unicode_chars.rs +++ b/src/libsyntax/parse/lexer/unicode_chars.rs @@ -344,9 +344,9 @@ pub fn check_for_substitution<'a>(reader: &StringReader<'a>, match ASCII_ARRAY.iter().find(|&&(c, _)| c == ascii_char) { Some(&(ascii_char, ascii_name)) => { let msg = - format!("unicode character '{}' ({}) looks like '{}' ({}), but it's not", + format!("Unicode character '{}' ({}) looks like '{}' ({}), but it is not", ch, u_name, ascii_char, ascii_name); - err.span_help(span, &msg); + err.span_suggestion(span, &msg, ascii_char.to_string()); }, None => { let msg = format!("substitution character not found for '{}'", ch); |
