Add double-equals homoglyph

This commit is contained in:
clubby789 2023-01-19 02:25:24 +00:00
parent 3520bba136
commit 1487aa9f9d
3 changed files with 17 additions and 1 deletions

View File

@ -296,6 +296,7 @@ pub(crate) const UNICODE_ARRAY: &[(char, &str, &str)] = &[
('〉', "Right Angle Bracket", ">"), ('〉', "Right Angle Bracket", ">"),
('》', "Right Double Angle Bracket", ">"), ('》', "Right Double Angle Bracket", ">"),
('', "Fullwidth Greater-Than Sign", ">"), ('', "Fullwidth Greater-Than Sign", ">"),
('⩵', "Two Consecutive Equals Signs", "==")
]; ];
// FIXME: the lexer could be used to turn the ASCII version of unicode homoglyphs, instead of // FIXME: the lexer could be used to turn the ASCII version of unicode homoglyphs, instead of
@ -325,6 +326,7 @@ const ASCII_ARRAY: &[(&str, &str, Option<token::TokenKind>)] = &[
("+", "Plus Sign", Some(token::BinOp(token::Plus))), ("+", "Plus Sign", Some(token::BinOp(token::Plus))),
("<", "Less-Than Sign", Some(token::Lt)), ("<", "Less-Than Sign", Some(token::Lt)),
("=", "Equals Sign", Some(token::Eq)), ("=", "Equals Sign", Some(token::Eq)),
("==", "Double Equals Sign", Some(token::EqEq)),
(">", "Greater-Than Sign", Some(token::Gt)), (">", "Greater-Than Sign", Some(token::Gt)),
// FIXME: Literals are already lexed by this point, so we can't recover gracefully just by // FIXME: Literals are already lexed by this point, so we can't recover gracefully just by
// spitting the correct token out. // spitting the correct token out.

View File

@ -6,4 +6,7 @@ fn main() {
//~^ ERROR unknown start of token: \u{a0} //~^ ERROR unknown start of token: \u{a0}
//~^^ NOTE character appears 3 more times //~^^ NOTE character appears 3 more times
//~^^^ HELP Unicode character ' ' (No-Break Space) looks like ' ' (Space), but it is not //~^^^ HELP Unicode character ' ' (No-Break Space) looks like ' ' (Space), but it is not
let _ = 1 2;
//~^ ERROR unknown start of token
//~^^ HELP Unicode character '⩵' (Two Consecutive Equals Signs) looks like '==' (Double Equals Sign), but it is not
} }

View File

@ -21,5 +21,16 @@ help: Unicode character ' ' (No-Break Space) looks like ' ' (Space), but it is
LL | let x = 0; LL | let x = 0;
| ++++ | ++++
error: aborting due to 2 previous errors error: unknown start of token: \u{2a75}
--> $DIR/unicode-chars.rs:9:15
|
LL | let _ = 1 ⩵ 2;
| ^
|
help: Unicode character '⩵' (Two Consecutive Equals Signs) looks like '==' (Double Equals Sign), but it is not
|
LL | let _ = 1 == 2;
| ~~
error: aborting due to 3 previous errors