Skip to content

Commit 4d3a027

Browse files
committed
perf(linter): use match for no_multi_assign
1 parent 83303b9 commit 4d3a027

File tree

2 files changed

+31
-25
lines changed

2 files changed

+31
-25
lines changed

crates/oxc_linter/src/generated/rule_runner_impls.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,11 @@ impl RuleRunner
381381
}
382382

383383
impl RuleRunner for crate::rules::eslint::no_multi_assign::NoMultiAssign {
384-
const NODE_TYPES: Option<&AstTypesBitset> = None;
384+
const NODE_TYPES: Option<&AstTypesBitset> = Some(&AstTypesBitset::from_types(&[
385+
AstType::AssignmentExpression,
386+
AstType::PropertyDefinition,
387+
AstType::VariableDeclarator,
388+
]));
385389
}
386390

387391
impl RuleRunner for crate::rules::eslint::no_multi_str::NoMultiStr {

crates/oxc_linter/src/rules/eslint/no_multi_assign.rs

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -117,30 +117,32 @@ impl Rule for NoMultiAssign {
117117
}
118118

119119
fn run<'a>(&self, node: &AstNode<'a>, ctx: &LintContext<'a>) {
120-
// e.g. `var a = b = c;`
121-
if let AstKind::VariableDeclarator(declarator) = node.kind() {
122-
let Some(Expression::AssignmentExpression(assign_expr)) = &declarator.init else {
123-
return;
124-
};
125-
ctx.diagnostic(no_multi_assign_diagnostic(assign_expr.span));
126-
}
127-
128-
// e.g. `class A { a = b = 1; }`
129-
if let AstKind::PropertyDefinition(prop_def) = node.kind() {
130-
let Some(Expression::AssignmentExpression(assign_expr)) = &prop_def.value else {
131-
return;
132-
};
133-
ctx.diagnostic(no_multi_assign_diagnostic(assign_expr.span));
134-
}
135-
136-
// e.g. `let a; let b; a = b = 1;`
137-
if !self.ignore_non_declaration
138-
&& let AstKind::AssignmentExpression(parent_expr) = node.kind()
139-
{
140-
let Expression::AssignmentExpression(expr) = &parent_expr.right else {
141-
return;
142-
};
143-
ctx.diagnostic(no_multi_assign_diagnostic(expr.span));
120+
match node.kind() {
121+
// e.g. `var a = b = c;`
122+
AstKind::VariableDeclarator(declarator) => {
123+
let Some(Expression::AssignmentExpression(assign_expr)) = &declarator.init else {
124+
return;
125+
};
126+
ctx.diagnostic(no_multi_assign_diagnostic(assign_expr.span));
127+
}
128+
// e.g. `class A { a = b = 1; }`
129+
AstKind::PropertyDefinition(prop_def) => {
130+
let Some(Expression::AssignmentExpression(assign_expr)) = &prop_def.value else {
131+
return;
132+
};
133+
ctx.diagnostic(no_multi_assign_diagnostic(assign_expr.span));
134+
}
135+
// e.g. `let a; let b; a = b = 1;`
136+
AstKind::AssignmentExpression(parent_expr) => {
137+
if self.ignore_non_declaration {
138+
return;
139+
}
140+
let Expression::AssignmentExpression(expr) = &parent_expr.right else {
141+
return;
142+
};
143+
ctx.diagnostic(no_multi_assign_diagnostic(expr.span));
144+
}
145+
_ => {}
144146
}
145147
}
146148
}

0 commit comments

Comments
 (0)