chore(linter): shorten eslint/eqeqeq rule error message's span (#3193)

This commit is contained in:
Wang Wenzhe 2024-05-08 14:32:57 +08:00 committed by GitHub
parent 7363e14335
commit cba1e7f463
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 36 additions and 22 deletions

View file

@ -101,10 +101,24 @@ impl Rule for Eqeqeq {
let (preferred_operator, preferred_operator_with_padding) =
to_strict_eq_operator_str(binary_expr.operator);
#[allow(clippy::cast_possible_truncation)]
let operator_span = {
let left_end = binary_expr.left.span().end;
let right_start = binary_expr.right.span().start;
let offset = Span::new(left_end, right_start)
.source_text(ctx.source_text())
.find(operator)
.unwrap_or(0) as u32;
let operator_start = left_end + offset;
let operator_end = operator_start + operator.len() as u32;
Span::new(operator_start, operator_end)
};
// If the comparison is a `typeof` comparison or both sides are literals with the same type, then it's safe to fix.
if is_type_of_binary_bool || are_literals_and_same_type_bool {
ctx.diagnostic_with_fix(
EqeqeqDiagnostic(operator, preferred_operator, binary_expr.span),
EqeqeqDiagnostic(operator, preferred_operator, operator_span),
|| {
let start = binary_expr.left.span().end;
let end = binary_expr.right.span().start;
@ -112,7 +126,7 @@ impl Rule for Eqeqeq {
},
);
} else {
ctx.diagnostic(EqeqeqDiagnostic(operator, preferred_operator, binary_expr.span));
ctx.diagnostic(EqeqeqDiagnostic(operator, preferred_operator, operator_span));
}
}
}

View file

@ -10,71 +10,71 @@ expression: eqeqeq
help: Prefer > operator
⚠ eslint(eqeqeq): Expected === and instead saw ==
╭─[eqeqeq.tsx:1:1]
╭─[eqeqeq.tsx:1:12]
1 │ typeof foo == 'undefined'
· ─────────────────────────
· ──
╰────
help: Prefer === operator
⚠ eslint(eqeqeq): Expected !== and instead saw !=
╭─[eqeqeq.tsx:1:1]
╭─[eqeqeq.tsx:1:9]
1 │ 'hello' != 'world'
· ──────────────────
· ──
╰────
help: Prefer !== operator
⚠ eslint(eqeqeq): Expected === and instead saw ==
╭─[eqeqeq.tsx:1:1]
╭─[eqeqeq.tsx:1:3]
1 │ 0 == 0
· ──────
· ──
╰────
help: Prefer === operator
⚠ eslint(eqeqeq): Expected === and instead saw ==
╭─[eqeqeq.tsx:1:1]
╭─[eqeqeq.tsx:1:6]
1 │ true == true
· ────────────
· ──
╰────
help: Prefer === operator
⚠ eslint(eqeqeq): Expected === and instead saw ==
╭─[eqeqeq.tsx:1:1]
╭─[eqeqeq.tsx:1:5]
1 │ foo == null
· ───────────
· ──
╰────
help: Prefer === operator
⚠ eslint(eqeqeq): Expected === and instead saw ==
╭─[eqeqeq.tsx:1:1]
╭─[eqeqeq.tsx:1:3]
1 │ a == b
· ──────
· ──
╰────
help: Prefer === operator
⚠ eslint(eqeqeq): Expected === and instead saw ==
╭─[eqeqeq.tsx:1:1]
╭─[eqeqeq.tsx:1:5]
1 │ foo == true
· ───────────
· ──
╰────
help: Prefer === operator
⚠ eslint(eqeqeq): Expected !== and instead saw !=
╭─[eqeqeq.tsx:1:1]
╭─[eqeqeq.tsx:1:9]
1 │ bananas != 1
· ────────────
· ──
╰────
help: Prefer !== operator
⚠ eslint(eqeqeq): Expected === and instead saw ==
╭─[eqeqeq.tsx:1:1]
╭─[eqeqeq.tsx:1:7]
1 │ value == undefined
· ──────────────────
· ──
╰────
help: Prefer === operator
⚠ eslint(eqeqeq): Expected === and instead saw ==
╭─[eqeqeq.tsx:1:1]
╭─[eqeqeq.tsx:1:6]
1 │ null == null
· ────────────
· ──
╰────
help: Prefer === operator