Skip to content

Commit f0c1eff

Browse files
committed
fix(linter): false positve in no-unused-vars (#10470)
fixes #10458
1 parent a42d85f commit f0c1eff

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

crates/oxc_linter/src/rules/eslint/no_unused_vars/tests/oxc.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,6 +1202,30 @@ fn test_type_references() {
12021202
.test_and_snapshot();
12031203
}
12041204

1205+
#[test]
1206+
fn test_ts_in_assignment() {
1207+
let pass = vec![
1208+
r"export const onClick = (value, key) => {
1209+
const obj: Record<string, string> = {};
1210+
(obj[key] as any) = value;
1211+
}",
1212+
r"export const onClick = (value, key) => {
1213+
const obj: Record<string, string> = {};
1214+
(obj[key] satisfies any) = value;
1215+
}",
1216+
r"export const onClick = (value, key) => {
1217+
const obj: Record<string, string> = {};
1218+
(obj[key]!) = value;
1219+
}",
1220+
];
1221+
let fail = vec![];
1222+
1223+
Tester::new(NoUnusedVars::NAME, NoUnusedVars::PLUGIN, pass, fail)
1224+
.intentionally_allow_no_fix_tests()
1225+
.with_snapshot_suffix("oxc-assignment-ts")
1226+
.test();
1227+
}
1228+
12051229
// #[test]
12061230
// fn test_template() {
12071231
// let pass = vec![];

crates/oxc_linter/src/rules/eslint/no_unused_vars/usage.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,27 @@ impl<'a> Symbol<'_, 'a> {
411411
return false; // we can short-circuit
412412
}
413413
}
414+
AssignmentTarget::TSAsExpression(v)
415+
if v.expression.is_member_expression() =>
416+
{
417+
return false;
418+
}
419+
AssignmentTarget::TSSatisfiesExpression(v)
420+
if v.expression.is_member_expression() =>
421+
{
422+
return false;
423+
}
424+
AssignmentTarget::TSNonNullExpression(v)
425+
if v.expression.is_member_expression() =>
426+
{
427+
return false;
428+
}
429+
AssignmentTarget::TSTypeAssertion(v)
430+
if v.expression.is_member_expression() =>
431+
{
432+
return false;
433+
}
434+
414435
// variable is being used to index another variable, this is
415436
// always a usage
416437
// todo: check self index?

0 commit comments

Comments
 (0)