diff --git a/crates/oxc_linter/src/rules/eslint/no_useless_escape.rs b/crates/oxc_linter/src/rules/eslint/no_useless_escape.rs index 32d74c80b..8be62bc67 100644 --- a/crates/oxc_linter/src/rules/eslint/no_useless_escape.rs +++ b/crates/oxc_linter/src/rules/eslint/no_useless_escape.rs @@ -68,7 +68,9 @@ fn check(ctx: &LintContext<'_>, start: u32, offsets: &[usize]) { for offset in offsets { let offset = start as usize + offset; let c = source_text[offset..].chars().next().unwrap(); - ctx.diagnostic(NoUselessEscapeDiagnostic(c, Span::new(offset as u32, offset as u32))); + let offset = offset as u32; + let len = c.len_utf8() as u32; + ctx.diagnostic(NoUselessEscapeDiagnostic(c, Span::new(offset - 1, offset + len))); } } diff --git a/crates/oxc_linter/src/snapshots/no_useless_escape.snap b/crates/oxc_linter/src/snapshots/no_useless_escape.snap index 09d1f43c6..ecb235b59 100644 --- a/crates/oxc_linter/src/snapshots/no_useless_escape.snap +++ b/crates/oxc_linter/src/snapshots/no_useless_escape.snap @@ -5,373 +5,373 @@ expression: no_useless_escape ⚠ eslint(no-useless-escape): Unnecessary escape character '#' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /\#/; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character ';' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /\;/; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '\'' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = "\'"; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '#' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = "\#/"; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'a' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = "\a" - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'B' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = "\B"; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '@' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = "\@"; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'a' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = "foo \a bar"; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '"' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = '\"'; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '#' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = '\#'; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '$' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = '\$'; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'p' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = '\p'; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'p' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = '\p\a\@'; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'a' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = '\p\a\@'; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '@' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = '\p\a\@'; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'd' ╭─[no_useless_escape.tsx:1:1] 1 │ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '`' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = '\`'; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '"' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = `\"`; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '\'' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = `\'`; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '#' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = `\#`; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '`' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = '\`foo\`'; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '`' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = '\`foo\`'; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '"' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = `\"${foo}\"`; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '"' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = `\"${foo}\"`; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '\'' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = `\'${foo}\'`; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '\'' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = `\'${foo}\'`; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '#' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = `\#${foo}`; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character ' ' ╭─[no_useless_escape.tsx:1:1] 1 │ let foo = '\ '; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character ' ' ╭─[no_useless_escape.tsx:1:1] 1 │ let foo = /\ /; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '$' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = `\$\{{${foo}`; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '{' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = `\$\{{${foo}`; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '$' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = `\$a${foo}`; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '{' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = `a\{{${foo}`; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '-' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[ab\-]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '-' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[\-ab]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '?' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[ab\?]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '.' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[ab\.]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '|' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[a\|b]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '-' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /\-/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '-' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[\-]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '$' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[ab\$]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '(' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[\(paren]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '[' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[\[]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '/' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[\/]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'B' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[\B]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '-' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[a][\-b]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '-' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /\-[]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '^' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /[a\^]/ - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'e' ╭─[no_useless_escape.tsx:1:1] 1 │ `multiline template 2 │ literal with useless \escape` - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'e' ╭─[no_useless_escape.tsx:1:1] 1 │ `multiline template 2 │ literal with useless \escape` - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'e' ╭─[no_useless_escape.tsx:1:1] 1 │ `template literal with line continuation \ 2 │ and useless \escape` - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'e' ╭─[no_useless_escape.tsx:1:1] 1 │ `template literal with line continuation \ 2 │ and useless \escape` - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'a' ╭─[no_useless_escape.tsx:3:1] 3 │ 4 │ \and useless escape` - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'a' ╭─[no_useless_escape.tsx:3:1] 3 │ \ 4 │ \and useless escape` - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character 'a' ╭─[no_useless_escape.tsx:1:1] 1 │ `\a``` - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '(' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /\(([^\)\(]+)\)$|\(([^\)\)]+)\)$/; - · ▲ + · ─── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character ')' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /\(([^\)\(]+)\)$|\(([^\)\)]+)\)$/; - · ▲ + · ─── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character '(' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /\(([^\)\(]+)\)$|\(([^\)\)]+)\)$/; - · ▲ + · ─── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character ')' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /\(([^\)\(]+)\)$|\(([^\)\)]+)\)$/; - · ▲ + · ─── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character ')' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /\(([^\)\(]+)\)$|\(([^\)\)]+)\)$/; - · ▲ + · ── ╰──── ⚠ eslint(no-useless-escape): Unnecessary escape character ')' ╭─[no_useless_escape.tsx:1:1] 1 │ var foo = /\(([^\)\(]+)\)$|\(([^\)\)]+)\)$/; - · ▲ + · ── ╰────