diff --git a/crates/oxc_linter/src/rules/eslint/no_irregular_whitespace.rs b/crates/oxc_linter/src/rules/eslint/no_irregular_whitespace.rs index 336e38174..019c80ad9 100644 --- a/crates/oxc_linter/src/rules/eslint/no_irregular_whitespace.rs +++ b/crates/oxc_linter/src/rules/eslint/no_irregular_whitespace.rs @@ -42,6 +42,7 @@ impl Rule for NoIrregularWhitespace { } } +#[allow(clippy::unicode_not_nfc, clippy::invisible_characters)] #[test] fn test() { use crate::tester::Tester; @@ -76,8 +77,8 @@ fn test() { (r"' ';", None), (r"'';", None), (r"'';", None), - // ("' ';", None), lint error - // (r"' ';", None), lint error + ("' ';", None), + (r"' ';", None), (r"' ';", None), (r"' ';", None), (r"' ';", None), @@ -87,7 +88,7 @@ fn test() { (r"' ';", None), (r"' ';", None), (r"' ';", None), - // (r"'';", None), lint error + (r"'';", None), (r"'\ ';", None), (r"'\ ';", None), (r"' ';", None), @@ -227,12 +228,12 @@ fn test() { ]; let fail = vec![ - // (r"var any = 'thing';", None), - // (r"var any = 'thing';", None), + (r"var any = 'thing';", None), + (r"var any = 'thing';", None), (r"var any = 'thing';", None), (r"var any = 'thing';", None), - // (r"var any = 'thing';", None), - // (r"var any = 'thing';", None), + (r"var any = 'thing';", None), + (r"var any = 'thing';", None), (r"var any = 'thing';", None), (r"var any = 'thing';", None), (r"var any = 'thing';", None), @@ -242,16 +243,16 @@ fn test() { (r"var any = 'thing';", None), (r"var any = 'thing';", None), (r"var any = 'thing';", None), - // (r"var any = 'thing';", None), - // (r"var any = 'thing';", None), + (r"var any = 'thing';", None), + (r"var any = 'thing';", None), (r"var any = 'thing';", None), (r"var any = 'thing';", None), (r"var any = 'thing';", None), - // ( - // r"var a = 'b', c = 'd', - // e = 'f' ", - // None, - // ), + ( + r"var a = 'b', c = 'd', + e = 'f' ", + None, + ), ( r"var any = 'thing', other = 'thing'; var third = 'thing';", @@ -346,42 +347,42 @@ fn test() { ", Some(serde_json::json!([{ "skipTemplates": true }])), ), - // (r"var foo = bar;", None), - // (r"var foo =bar;", None), - // (r"var foo = bar;", None), - // (r"var foo = bar;", None), - // (r"var foo = bar;", None), - // (r"var foo = bar;", None), - // (r"", None), + (r"var foo = bar;", None), + (r"var foo =bar;", None), + (r"var foo = bar;", None), + (r"var foo = bar;", None), + (r"var foo = bar;", None), + (r"var foo = bar;", None), + (r"", None), (" ", None), // ( - // r"var foo = - // bar;", - // None, - // ), - // ( - // r"var foo = - // bar;", - // None, - // ), - // ( - // r"var foo = - // bar - // ; - // ", - // None, - // ), - // (r"var foo = bar;", None), - // (r"var foo = bar;", None), - // (r"var foo = bar; ", None), - // (r" ", None), - // (r"foo ", None), - // (r"foo ", None), - // ( - // r"foo - // ", - // None, + // r"var foo = + // bar;", + // None, // ), + ( + r"var foo = + bar;", + None, + ), + ( + r"var foo = + bar + ; + ", + None, + ), + (r"var foo = bar;", None), + (r"var foo = bar;", None), + (r"var foo = bar; ", None), + (r" ", None), + (r"foo ", None), + (r"foo ", None), + ( + r"foo + ", + None, + ), // (r"foo ", None), // (r"
;", None), // (r";", None), diff --git a/crates/oxc_linter/src/snapshots/no_irregular_whitespace.snap b/crates/oxc_linter/src/snapshots/no_irregular_whitespace.snap index 5d587599f..4401ac024 100644 --- a/crates/oxc_linter/src/snapshots/no_irregular_whitespace.snap +++ b/crates/oxc_linter/src/snapshots/no_irregular_whitespace.snap @@ -3,108 +3,166 @@ source: crates/oxc_linter/src/tester.rs expression: no_irregular_whitespace --- + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:9] + 1 │ var any = 'thing'; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:9] + 1 │ var any = 'thing'; + · ─ + ╰──── + help: Try to remove the irregular whitespace + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:9] + 1 │ var any = 'thing'; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:9] + 1 │ var any = 'thing'; + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:9] + 1 │ var any = 'thing'; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:9] + 1 │ var any = 'thing'; + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing'; - · ▲ + · ── + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:13] + 1 │ var a = 'b', c = 'd', + · ─ + 2 │ e = 'f' + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:2:18] + 1 │ var a = 'b', c = 'd', + 2 │ e = 'f' + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:9] 1 │ var any = 'thing', other = 'thing'; - · ▲ + · ── 2 │ var third = 'thing'; ╰──── help: Try to remove the irregular whitespace @@ -112,7 +170,7 @@ expression: no_irregular_whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:29] 1 │ var any = 'thing', other = 'thing'; - · ▲ + · ── 2 │ var third = 'thing'; ╰──── help: Try to remove the irregular whitespace @@ -121,28 +179,28 @@ expression: no_irregular_whitespace ╭─[no_irregular_whitespace.tsx:2:23] 1 │ var any = 'thing', other = 'thing'; 2 │ var third = 'thing'; - · ▲ + · ── ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:14] 1 │ `something ${ 10} another thing` - · ▲ + · ── ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:16] 1 │ `something ${10 } another thing` - · ▲ + · ── ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:1] 1 │ - · ▲ + · ── 2 │ ` template` ╰──── help: Try to remove the irregular whitespace @@ -150,7 +208,7 @@ expression: no_irregular_whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:1] 1 │ - · ▲ + · ── 2 │ ` multiline ╰──── help: Try to remove the irregular whitespace @@ -158,14 +216,14 @@ expression: no_irregular_whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:1] 1 │ ` template` - · ▲ + · ── ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:1] 1 │ ` multiline - · ▲ + · ── 2 │ template` ╰──── help: Try to remove the irregular whitespace @@ -173,7 +231,7 @@ expression: no_irregular_whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:13] 1 │ ` template` - · ▲ + · ── ╰──── help: Try to remove the irregular whitespace @@ -181,7 +239,7 @@ expression: no_irregular_whitespace ╭─[no_irregular_whitespace.tsx:2:22] 1 │ ` multiline 2 │ template` - · ▲ + · ── ╰──── help: Try to remove the irregular whitespace @@ -189,7 +247,7 @@ expression: no_irregular_whitespace ╭─[no_irregular_whitespace.tsx:2:13] 1 │ ` template` 2 │ - · ▲ + · ── ╰──── help: Try to remove the irregular whitespace @@ -197,28 +255,204 @@ expression: no_irregular_whitespace ╭─[no_irregular_whitespace.tsx:3:13] 2 │ template` 3 │ - · ▲ + · ── + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:11] + 1 │ var foo = bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:10] + 1 │ var foo =bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:11] + 1 │ var foo = bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:11] + 1 │ var foo = bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:11] + 1 │ var foo = bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:11] + 1 │ var foo = bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:11] + 1 │ var foo = bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:12] + 1 │ var foo = bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:11] + 1 │ var foo = bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:14] + 1 │ var foo = bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:1] + 1 │ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:1] 1 │ - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:2] 1 │ - · ▲ + · ─ ╰──── help: Try to remove the irregular whitespace ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace ╭─[no_irregular_whitespace.tsx:1:3] 1 │ - · ▲ + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:2:9] + 1 │ var foo = + 2 │ bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:2:9] + 1 │ var foo = + 2 │ bar + · ─ + 3 │ ; + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:2:9] + 1 │ var foo = + 2 │ bar + · ─ + 3 │ ; + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:2:9] + 1 │ var foo = + 2 │ bar + · ─ + 3 │ ; + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:11] + 1 │ var foo = bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:10] + 1 │ var foo = bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:15] + 1 │ var foo = bar; + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:1] + 1 │ + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:4] + 1 │ foo + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:5] + 1 │ foo + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:4] + 1 │ foo + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:1:5] + 1 │ foo + · ─ + ╰──── + help: Try to remove the irregular whitespace + + ⚠ eslint(no-irregular-whitespace): Unexpected irregular whitespace + ╭─[no_irregular_whitespace.tsx:2:9] + 1 │ foo + 2 │ + · ─ ╰──── help: Try to remove the irregular whitespace diff --git a/crates/oxc_parser/src/lexer/byte_handlers.rs b/crates/oxc_parser/src/lexer/byte_handlers.rs index b486e10e0..539c4032e 100644 --- a/crates/oxc_parser/src/lexer/byte_handlers.rs +++ b/crates/oxc_parser/src/lexer/byte_handlers.rs @@ -20,7 +20,7 @@ type ByteHandler = unsafe fn(&mut Lexer<'_>) -> Kind; #[rustfmt::skip] static BYTE_HANDLERS: [ByteHandler; 256] = [ // 0 1 2 3 4 5 6 7 8 9 A B C D E F // - ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, SPS, LIN, SPS, SPS, LIN, ERR, ERR, // 0 + ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, SPS, LIN, ISP, ISP, LIN, ERR, ERR, // 0 ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, ERR, // 1 SPS, EXL, QOT, HAS, IDT, PRC, AMP, QOT, PNO, PNC, ATR, PLS, COM, MIN, PRD, SLH, // 2 ZER, DIG, DIG, DIG, DIG, DIG, DIG, DIG, DIG, DIG, COL, SEM, LSS, EQL, GTR, QST, // 3 @@ -98,12 +98,19 @@ ascii_byte_handler!(ERR(lexer) { Kind::Undetermined }); -//