From f8464a39532a021dfdf9d2ff632640e0159f6ef8 Mon Sep 17 00:00:00 2001 From: "Alexander S." Date: Tue, 24 Sep 2024 20:46:56 +0200 Subject: [PATCH] perf(linter): `no-magic-numbers` remove redudant checks in `is_array_index` (#6033) - there can not be an `UnaryExpression` as a `parent_kind`, when the `ast_kind` is `NumericLiteral`, `InternConfig::from` prevents it from happending - `NumericLiteral` can not be negative or else they would be passed as `UnaryExpression` --- .../src/rules/eslint/no_magic_numbers.rs | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/crates/oxc_linter/src/rules/eslint/no_magic_numbers.rs b/crates/oxc_linter/src/rules/eslint/no_magic_numbers.rs index b940a43f5..8b5fdbd17 100644 --- a/crates/oxc_linter/src/rules/eslint/no_magic_numbers.rs +++ b/crates/oxc_linter/src/rules/eslint/no_magic_numbers.rs @@ -1,7 +1,5 @@ use oxc_ast::{ - ast::{ - AssignmentTarget, Expression, MemberExpression, UnaryExpression, VariableDeclarationKind, - }, + ast::{AssignmentTarget, Expression, MemberExpression, VariableDeclarationKind}, AstKind, }; use oxc_diagnostics::OxcDiagnostic; @@ -369,8 +367,9 @@ fn is_parse_int_radix(parent_parent_node: &AstNode<'_>) -> bool { /// a[1e310] // (same as a["Infinity"]) /// ``` fn is_array_index<'a>(ast_kind: &AstKind<'a>, parent_kind: &AstKind<'a>) -> bool { - fn is_unanary_index(unary: &UnaryExpression) -> bool { - match &unary.argument { + match ast_kind { + AstKind::BigIntLiteral(_) => true, + AstKind::UnaryExpression(unary) => match &unary.argument { Expression::BigIntLiteral(_) => true, Expression::NumericLiteral(numeric) if unary.operator == UnaryOperator::UnaryNegation => @@ -378,25 +377,18 @@ fn is_array_index<'a>(ast_kind: &AstKind<'a>, parent_kind: &AstKind<'a>) -> bool numeric.value == 0.0 } _ => false, - } - } - - match ast_kind { - AstKind::UnaryExpression(unary) => is_unanary_index(unary), - AstKind::BigIntLiteral(_) => true, + }, AstKind::NumericLiteral(numeric) => match parent_kind { AstKind::MemberExpression(expression) => { if let MemberExpression::ComputedMemberExpression(computed_expression) = expression { return computed_expression.expression.is_number_value(numeric.value) - && numeric.value >= 0.0 && numeric.value.fract() == 0.0 && numeric.value < f64::from(u32::MAX); } false } - AstKind::UnaryExpression(unary) => is_unanary_index(unary), _ => false, }, _ => false,