From 918b957ce792abfefeca334f940372a3fa5a9fc2 Mon Sep 17 00:00:00 2001 From: Cam McHenry Date: Mon, 25 Aug 2025 00:02:54 -0400 Subject: [PATCH] perf(linter): generate node type info for lint rules with `let..else` --- crates/oxc_linter/src/rule.rs | 14 + crates/oxc_linter/src/rule_runner_impls.rs | 993 +++++++++++---------- tasks/linter_codegen/src/main.rs | 72 +- 3 files changed, 597 insertions(+), 482 deletions(-) diff --git a/crates/oxc_linter/src/rule.rs b/crates/oxc_linter/src/rule.rs index 4b110446761fe..e52c4b97e27b1 100644 --- a/crates/oxc_linter/src/rule.rs +++ b/crates/oxc_linter/src/rule.rs @@ -360,6 +360,11 @@ mod test { &eslint::default_case::DefaultCase::default(), &[SwitchStatement], ); + assert_rule_runs_on_node_types(&eslint::for_direction::ForDirection, &[ForStatement]); + assert_rule_runs_on_node_types( + &eslint::no_useless_constructor::NoUselessConstructor, + &[MethodDefinition], + ); assert_rule_runs_on_node_types( &import::no_mutable_exports::NoMutableExports, &[ExportNamedDeclaration, ExportDefaultDeclaration], @@ -368,10 +373,15 @@ mod test { &jest::prefer_jest_mocked::PreferJestMocked, &[TSAsExpression, TSTypeAssertion], ); + assert_rule_runs_on_node_types( + &jest::prefer_called_with::PreferCalledWith, + &[CallExpression], + ); assert_rule_runs_on_node_types( &jsx_a11y::anchor_is_valid::AnchorIsValid::default(), &[JSXElement], ); + assert_rule_runs_on_node_types(&jsx_a11y::lang::Lang, &[JSXOpeningElement]); assert_rule_runs_on_node_types( &nextjs::no_head_element::NoHeadElement, &[JSXOpeningElement], @@ -396,6 +406,10 @@ mod test { &unicorn::explicit_length_check::ExplicitLengthCheck::default(), &[StaticMemberExpression], ); + assert_rule_runs_on_node_types( + &unicorn::no_zero_fractions::NoZeroFractions, + &[NumericLiteral], + ); } fn assert_rule_runs_on_node_types( diff --git a/crates/oxc_linter/src/rule_runner_impls.rs b/crates/oxc_linter/src/rule_runner_impls.rs index da51ce362efb7..41076ea91a4f5 100644 --- a/crates/oxc_linter/src/rule_runner_impls.rs +++ b/crates/oxc_linter/src/rule_runner_impls.rs @@ -19,8 +19,9 @@ impl RuleRunner for crate::rules::eslint::array_callback_return::ArrayCallbackRe } impl RuleRunner for crate::rules::eslint::arrow_body_style::ArrowBodyStyle { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::ArrowFunctionExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -29,8 +30,9 @@ impl RuleRunner for crate::rules::eslint::arrow_body_style::ArrowBodyStyle { } impl RuleRunner for crate::rules::eslint::block_scoped_var::BlockScopedVar { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::VariableDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -66,8 +68,8 @@ impl RuleRunner for crate::rules::eslint::default_case::DefaultCase { } impl RuleRunner for crate::rules::eslint::default_case_last::DefaultCaseLast { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::SwitchStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -87,8 +89,8 @@ impl RuleRunner for crate::rules::eslint::default_param_last::DefaultParamLast { } impl RuleRunner for crate::rules::eslint::eqeqeq::Eqeqeq { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -97,8 +99,8 @@ impl RuleRunner for crate::rules::eslint::eqeqeq::Eqeqeq { } impl RuleRunner for crate::rules::eslint::for_direction::ForDirection { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ForStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -254,8 +256,8 @@ impl RuleRunner for crate::rules::eslint::new_cap::NewCap { } impl RuleRunner for crate::rules::eslint::no_alert::NoAlert { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -274,8 +276,8 @@ impl RuleRunner for crate::rules::eslint::no_array_constructor::NoArrayConstruct } impl RuleRunner for crate::rules::eslint::no_async_promise_executor::NoAsyncPromiseExecutor { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NewExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -339,8 +341,8 @@ impl RuleRunner for crate::rules::eslint::no_class_assign::NoClassAssign { } impl RuleRunner for crate::rules::eslint::no_compare_neg_zero::NoCompareNegZero { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -408,8 +410,8 @@ impl RuleRunner for crate::rules::eslint::no_constant_condition::NoConstantCondi } impl RuleRunner for crate::rules::eslint::no_constructor_return::NoConstructorReturn { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ReturnStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -448,8 +450,8 @@ impl RuleRunner for crate::rules::eslint::no_debugger::NoDebugger { } impl RuleRunner for crate::rules::eslint::no_delete_var::NoDeleteVar { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::UnaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -478,8 +480,8 @@ impl RuleRunner for crate::rules::eslint::no_dupe_class_members::NoDupeClassMemb } impl RuleRunner for crate::rules::eslint::no_dupe_else_if::NoDupeElseIf { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::IfStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -488,8 +490,8 @@ impl RuleRunner for crate::rules::eslint::no_dupe_else_if::NoDupeElseIf { } impl RuleRunner for crate::rules::eslint::no_dupe_keys::NoDupeKeys { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ObjectExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -518,8 +520,8 @@ impl RuleRunner for crate::rules::eslint::no_duplicate_imports::NoDuplicateImpor } impl RuleRunner for crate::rules::eslint::no_else_return::NoElseReturn { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::IfStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -548,8 +550,8 @@ impl RuleRunner for crate::rules::eslint::no_empty_character_class::NoEmptyChara } impl RuleRunner for crate::rules::eslint::no_empty_function::NoEmptyFunction { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::FunctionBody]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -618,8 +620,8 @@ impl RuleRunner for crate::rules::eslint::no_extend_native::NoExtendNative { } impl RuleRunner for crate::rules::eslint::no_extra_bind::NoExtraBind { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -648,8 +650,8 @@ impl RuleRunner for crate::rules::eslint::no_extra_label::NoExtraLabel { } impl RuleRunner for crate::rules::eslint::no_fallthrough::NoFallthrough { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::SwitchStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -728,8 +730,8 @@ impl RuleRunner for crate::rules::eslint::no_iterator::NoIterator { } impl RuleRunner for crate::rules::eslint::no_label_var::NoLabelVar { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::LabeledStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -748,8 +750,8 @@ impl RuleRunner for crate::rules::eslint::no_labels::NoLabels { } impl RuleRunner for crate::rules::eslint::no_lone_blocks::NoLoneBlocks { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BlockStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -758,8 +760,8 @@ impl RuleRunner for crate::rules::eslint::no_lone_blocks::NoLoneBlocks { } impl RuleRunner for crate::rules::eslint::no_lonely_if::NoLonelyIf { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::IfStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -829,8 +831,8 @@ impl RuleRunner for crate::rules::eslint::no_nested_ternary::NoNestedTernary { } impl RuleRunner for crate::rules::eslint::no_new::NoNew { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NewExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -849,8 +851,8 @@ impl RuleRunner for crate::rules::eslint::no_new_func::NoNewFunc { } impl RuleRunner for crate::rules::eslint::no_new_native_nonconstructor::NoNewNativeNonconstructor { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NewExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -859,8 +861,8 @@ impl RuleRunner for crate::rules::eslint::no_new_native_nonconstructor::NoNewNat } impl RuleRunner for crate::rules::eslint::no_new_wrappers::NoNewWrappers { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NewExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -899,8 +901,8 @@ impl RuleRunner for crate::rules::eslint::no_object_constructor::NoObjectConstru } impl RuleRunner for crate::rules::eslint::no_plusplus::NoPlusplus { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::UpdateExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -919,8 +921,8 @@ impl RuleRunner for crate::rules::eslint::no_proto::NoProto { } impl RuleRunner for crate::rules::eslint::no_prototype_builtins::NoPrototypeBuiltins { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -960,8 +962,9 @@ impl RuleRunner for crate::rules::eslint::no_restricted_globals::NoRestrictedGlo } impl RuleRunner for crate::rules::eslint::no_restricted_imports::NoRestrictedImports { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::TSImportEqualsDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -970,8 +973,9 @@ impl RuleRunner for crate::rules::eslint::no_restricted_imports::NoRestrictedImp } impl RuleRunner for crate::rules::eslint::no_return_assign::NoReturnAssign { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::AssignmentExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -990,8 +994,9 @@ impl RuleRunner for crate::rules::eslint::no_script_url::NoScriptUrl { } impl RuleRunner for crate::rules::eslint::no_self_assign::NoSelfAssign { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::AssignmentExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1000,8 +1005,8 @@ impl RuleRunner for crate::rules::eslint::no_self_assign::NoSelfAssign { } impl RuleRunner for crate::rules::eslint::no_self_compare::NoSelfCompare { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1010,8 +1015,8 @@ impl RuleRunner for crate::rules::eslint::no_self_compare::NoSelfCompare { } impl RuleRunner for crate::rules::eslint::no_setter_return::NoSetterReturn { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ReturnStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1040,8 +1045,8 @@ impl RuleRunner for crate::rules::eslint::no_sparse_arrays::NoSparseArrays { } impl RuleRunner for crate::rules::eslint::no_template_curly_in_string::NoTemplateCurlyInString { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::StringLiteral]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1071,8 +1076,8 @@ impl RuleRunner for crate::rules::eslint::no_this_before_super::NoThisBeforeSupe } impl RuleRunner for crate::rules::eslint::no_throw_literal::NoThrowLiteral { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ThrowStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1081,8 +1086,8 @@ impl RuleRunner for crate::rules::eslint::no_throw_literal::NoThrowLiteral { } impl RuleRunner for crate::rules::eslint::no_unassigned_vars::NoUnassignedVars { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::VariableDeclarator]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1127,8 +1132,9 @@ impl RuleRunner for crate::rules::eslint::no_unexpected_multiline::NoUnexpectedM } impl RuleRunner for crate::rules::eslint::no_unneeded_ternary::NoUnneededTernary { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::ConditionalExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1157,8 +1163,8 @@ impl RuleRunner for crate::rules::eslint::no_unsafe_finally::NoUnsafeFinally { } impl RuleRunner for crate::rules::eslint::no_unsafe_negation::NoUnsafeNegation { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1177,8 +1183,9 @@ impl RuleRunner for crate::rules::eslint::no_unsafe_optional_chaining::NoUnsafeO } impl RuleRunner for crate::rules::eslint::no_unused_expressions::NoUnusedExpressions { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::ExpressionStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1229,8 +1236,8 @@ impl RuleRunner for crate::rules::eslint::no_useless_backreference::NoUselessBac } impl RuleRunner for crate::rules::eslint::no_useless_call::NoUselessCall { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1239,8 +1246,8 @@ impl RuleRunner for crate::rules::eslint::no_useless_call::NoUselessCall { } impl RuleRunner for crate::rules::eslint::no_useless_catch::NoUselessCatch { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::TryStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1249,8 +1256,8 @@ impl RuleRunner for crate::rules::eslint::no_useless_catch::NoUselessCatch { } impl RuleRunner for crate::rules::eslint::no_useless_concat::NoUselessConcat { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1259,8 +1266,8 @@ impl RuleRunner for crate::rules::eslint::no_useless_concat::NoUselessConcat { } impl RuleRunner for crate::rules::eslint::no_useless_constructor::NoUselessConstructor { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::MethodDefinition]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1305,8 +1312,8 @@ impl RuleRunner for crate::rules::eslint::no_var::NoVar { } impl RuleRunner for crate::rules::eslint::no_void::NoVoid { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::UnaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1325,8 +1332,9 @@ impl RuleRunner for crate::rules::eslint::no_with::NoWith { } impl RuleRunner for crate::rules::eslint::operator_assignment::OperatorAssignment { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::AssignmentExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1347,8 +1355,8 @@ impl RuleRunner for crate::rules::eslint::prefer_destructuring::PreferDestructur impl RuleRunner for crate::rules::eslint::prefer_exponentiation_operator::PreferExponentiationOperator { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1357,8 +1365,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::eslint::prefer_numeric_literals::PreferNumericLiterals { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1367,8 +1375,8 @@ impl RuleRunner for crate::rules::eslint::prefer_numeric_literals::PreferNumeric } impl RuleRunner for crate::rules::eslint::prefer_object_has_own::PreferObjectHasOwn { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1377,8 +1385,8 @@ impl RuleRunner for crate::rules::eslint::prefer_object_has_own::PreferObjectHas } impl RuleRunner for crate::rules::eslint::prefer_object_spread::PreferObjectSpread { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1409,8 +1417,8 @@ impl RuleRunner for crate::rules::eslint::prefer_rest_params::PreferRestParams { } impl RuleRunner for crate::rules::eslint::prefer_spread::PreferSpread { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1419,8 +1427,8 @@ impl RuleRunner for crate::rules::eslint::prefer_spread::PreferSpread { } impl RuleRunner for crate::rules::eslint::prefer_template::PreferTemplate { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1429,8 +1437,8 @@ impl RuleRunner for crate::rules::eslint::prefer_template::PreferTemplate { } impl RuleRunner for crate::rules::eslint::radix::Radix { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1439,8 +1447,8 @@ impl RuleRunner for crate::rules::eslint::radix::Radix { } impl RuleRunner for crate::rules::eslint::require_await::RequireAwait { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::FunctionBody]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1479,8 +1487,9 @@ impl RuleRunner for crate::rules::eslint::sort_keys::SortKeys { } impl RuleRunner for crate::rules::eslint::sort_vars::SortVars { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::VariableDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1489,8 +1498,8 @@ impl RuleRunner for crate::rules::eslint::sort_vars::SortVars { } impl RuleRunner for crate::rules::eslint::symbol_description::SymbolDescription { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1529,8 +1538,9 @@ impl RuleRunner for crate::rules::eslint::valid_typeof::ValidTypeof { } impl RuleRunner for crate::rules::eslint::vars_on_top::VarsOnTop { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::VariableDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1539,8 +1549,8 @@ impl RuleRunner for crate::rules::eslint::vars_on_top::VarsOnTop { } impl RuleRunner for crate::rules::eslint::yoda::Yoda { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1551,8 +1561,8 @@ impl RuleRunner for crate::rules::eslint::yoda::Yoda { impl RuleRunner for crate::rules::import::consistent_type_specifier_style::ConsistentTypeSpecifierStyle { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ImportDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1671,8 +1681,9 @@ impl RuleRunner for crate::rules::import::no_amd::NoAmd { } impl RuleRunner for crate::rules::import::no_anonymous_default_export::NoAnonymousDefaultExport { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::ExportDefaultDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1732,8 +1743,8 @@ impl RuleRunner for crate::rules::import::no_dynamic_require::NoDynamicRequire { } impl RuleRunner for crate::rules::import::no_empty_named_blocks::NoEmptyNamedBlocks { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ImportDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1846,8 +1857,8 @@ impl RuleRunner for crate::rules::import::unambiguous::Unambiguous { } impl RuleRunner for crate::rules::jest::consistent_test_it::ConsistentTestIt { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1866,8 +1877,8 @@ impl RuleRunner for crate::rules::jest::expect_expect::ExpectExpect { } impl RuleRunner for crate::rules::jest::max_expects::MaxExpects { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1876,8 +1887,8 @@ impl RuleRunner for crate::rules::jest::max_expects::MaxExpects { } impl RuleRunner for crate::rules::jest::max_nested_describe::MaxNestedDescribe { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1966,8 +1977,8 @@ impl RuleRunner for crate::rules::jest::no_done_callback::NoDoneCallback { } impl RuleRunner for crate::rules::jest::no_duplicate_hooks::NoDuplicateHooks { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -1996,8 +2007,8 @@ impl RuleRunner for crate::rules::jest::no_focused_tests::NoFocusedTests { } impl RuleRunner for crate::rules::jest::no_hooks::NoHooks { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2037,8 +2048,8 @@ impl RuleRunner for crate::rules::jest::no_jasmine_globals::NoJasmineGlobals { } impl RuleRunner for crate::rules::jest::no_large_snapshots::NoLargeSnapshots { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2057,8 +2068,8 @@ impl RuleRunner for crate::rules::jest::no_mocks_import::NoMocksImport { } impl RuleRunner for crate::rules::jest::no_restricted_jest_methods::NoRestrictedJestMethods { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2067,8 +2078,8 @@ impl RuleRunner for crate::rules::jest::no_restricted_jest_methods::NoRestricted } impl RuleRunner for crate::rules::jest::no_restricted_matchers::NoRestrictedMatchers { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2077,8 +2088,8 @@ impl RuleRunner for crate::rules::jest::no_restricted_matchers::NoRestrictedMatc } impl RuleRunner for crate::rules::jest::no_standalone_expect::NoStandaloneExpect { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2107,8 +2118,8 @@ impl RuleRunner for crate::rules::jest::no_test_return_statement::NoTestReturnSt } impl RuleRunner for crate::rules::jest::no_untyped_mock_factory::NoUntypedMockFactory { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2127,8 +2138,8 @@ impl RuleRunner for crate::rules::jest::padding_around_test_blocks::PaddingAroun } impl RuleRunner for crate::rules::jest::prefer_called_with::PreferCalledWith { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2137,8 +2148,8 @@ impl RuleRunner for crate::rules::jest::prefer_called_with::PreferCalledWith { } impl RuleRunner for crate::rules::jest::prefer_comparison_matcher::PreferComparisonMatcher { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2157,9 +2168,9 @@ impl RuleRunner for crate::rules::jest::prefer_each::PreferEach { } impl RuleRunner for crate::rules::jest::prefer_equality_matcher::PreferEqualityMatcher { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; - + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; + #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { (Self::NODE_TYPES, Self::ANY_NODE_TYPE) @@ -2187,8 +2198,8 @@ impl RuleRunner for crate::rules::jest::prefer_hooks_in_order::PreferHooksInOrde } impl RuleRunner for crate::rules::jest::prefer_hooks_on_top::PreferHooksOnTop { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2218,8 +2229,8 @@ impl RuleRunner for crate::rules::jest::prefer_lowercase_title::PreferLowercaseT } impl RuleRunner for crate::rules::jest::prefer_mock_promise_shorthand::PreferMockPromiseShorthand { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2228,8 +2239,9 @@ impl RuleRunner for crate::rules::jest::prefer_mock_promise_shorthand::PreferMoc } impl RuleRunner for crate::rules::jest::prefer_spy_on::PreferSpyOn { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::AssignmentExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2248,8 +2260,8 @@ impl RuleRunner for crate::rules::jest::prefer_strict_equal::PreferStrictEqual { } impl RuleRunner for crate::rules::jest::prefer_to_be::PreferToBe { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2258,8 +2270,8 @@ impl RuleRunner for crate::rules::jest::prefer_to_be::PreferToBe { } impl RuleRunner for crate::rules::jest::prefer_to_contain::PreferToContain { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2268,8 +2280,8 @@ impl RuleRunner for crate::rules::jest::prefer_to_contain::PreferToContain { } impl RuleRunner for crate::rules::jest::prefer_to_have_length::PreferToHaveLength { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2298,8 +2310,8 @@ impl RuleRunner for crate::rules::jest::require_hook::RequireHook { } impl RuleRunner for crate::rules::jest::require_to_throw_message::RequireToThrowMessage { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2308,8 +2320,8 @@ impl RuleRunner for crate::rules::jest::require_to_throw_message::RequireToThrow } impl RuleRunner for crate::rules::jest::require_top_level_describe::RequireTopLevelDescribe { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2328,8 +2340,8 @@ impl RuleRunner for crate::rules::jest::valid_describe_callback::ValidDescribeCa } impl RuleRunner for crate::rules::jest::valid_expect::ValidExpect { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2338,8 +2350,8 @@ impl RuleRunner for crate::rules::jest::valid_expect::ValidExpect { } impl RuleRunner for crate::rules::jest::valid_title::ValidTitle { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2528,8 +2540,8 @@ impl RuleRunner for crate::rules::jsdoc::require_yields::RequireYields { } impl RuleRunner for crate::rules::jsx_a11y::alt_text::AltText { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2538,8 +2550,8 @@ impl RuleRunner for crate::rules::jsx_a11y::alt_text::AltText { } impl RuleRunner for crate::rules::jsx_a11y::anchor_ambiguous_text::AnchorAmbiguousText { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2570,8 +2582,8 @@ impl RuleRunner for crate::rules::jsx_a11y::anchor_is_valid::AnchorIsValid { impl RuleRunner for crate::rules::jsx_a11y::aria_activedescendant_has_tabindex::AriaActivedescendantHasTabindex { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2620,8 +2632,8 @@ impl RuleRunner for crate::rules::jsx_a11y::autocomplete_valid::AutocompleteVali } impl RuleRunner for crate::rules::jsx_a11y::click_events_have_key_events::ClickEventsHaveKeyEvents { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2630,8 +2642,8 @@ impl RuleRunner for crate::rules::jsx_a11y::click_events_have_key_events::ClickE } impl RuleRunner for crate::rules::jsx_a11y::heading_has_content::HeadingHasContent { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2640,8 +2652,8 @@ impl RuleRunner for crate::rules::jsx_a11y::heading_has_content::HeadingHasConte } impl RuleRunner for crate::rules::jsx_a11y::html_has_lang::HtmlHasLang { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2650,8 +2662,8 @@ impl RuleRunner for crate::rules::jsx_a11y::html_has_lang::HtmlHasLang { } impl RuleRunner for crate::rules::jsx_a11y::iframe_has_title::IframeHasTitle { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2660,8 +2672,8 @@ impl RuleRunner for crate::rules::jsx_a11y::iframe_has_title::IframeHasTitle { } impl RuleRunner for crate::rules::jsx_a11y::img_redundant_alt::ImgRedundantAlt { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2672,8 +2684,8 @@ impl RuleRunner for crate::rules::jsx_a11y::img_redundant_alt::ImgRedundantAlt { impl RuleRunner for crate::rules::jsx_a11y::label_has_associated_control::LabelHasAssociatedControl { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2682,8 +2694,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::jsx_a11y::lang::Lang { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2692,8 +2704,8 @@ impl RuleRunner for crate::rules::jsx_a11y::lang::Lang { } impl RuleRunner for crate::rules::jsx_a11y::media_has_caption::MediaHasCaption { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2702,8 +2714,8 @@ impl RuleRunner for crate::rules::jsx_a11y::media_has_caption::MediaHasCaption { } impl RuleRunner for crate::rules::jsx_a11y::mouse_events_have_key_events::MouseEventsHaveKeyEvents { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2712,8 +2724,8 @@ impl RuleRunner for crate::rules::jsx_a11y::mouse_events_have_key_events::MouseE } impl RuleRunner for crate::rules::jsx_a11y::no_access_key::NoAccessKey { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2722,8 +2734,8 @@ impl RuleRunner for crate::rules::jsx_a11y::no_access_key::NoAccessKey { } impl RuleRunner for crate::rules::jsx_a11y::no_aria_hidden_on_focusable::NoAriaHiddenOnFocusable { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2732,8 +2744,8 @@ impl RuleRunner for crate::rules::jsx_a11y::no_aria_hidden_on_focusable::NoAriaH } impl RuleRunner for crate::rules::jsx_a11y::no_autofocus::NoAutofocus { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2742,8 +2754,8 @@ impl RuleRunner for crate::rules::jsx_a11y::no_autofocus::NoAutofocus { } impl RuleRunner for crate::rules::jsx_a11y::no_distracting_elements::NoDistractingElements { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2752,8 +2764,8 @@ impl RuleRunner for crate::rules::jsx_a11y::no_distracting_elements::NoDistracti } impl RuleRunner for crate::rules::jsx_a11y::no_noninteractive_tabindex::NoNoninteractiveTabindex { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2762,8 +2774,8 @@ impl RuleRunner for crate::rules::jsx_a11y::no_noninteractive_tabindex::NoNonint } impl RuleRunner for crate::rules::jsx_a11y::no_redundant_roles::NoRedundantRoles { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2792,8 +2804,8 @@ impl RuleRunner for crate::rules::jsx_a11y::role_has_required_aria_props::RoleHa } impl RuleRunner for crate::rules::jsx_a11y::role_supports_aria_props::RoleSupportsAriaProps { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2802,8 +2814,8 @@ impl RuleRunner for crate::rules::jsx_a11y::role_supports_aria_props::RoleSuppor } impl RuleRunner for crate::rules::jsx_a11y::scope::Scope { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2812,8 +2824,8 @@ impl RuleRunner for crate::rules::jsx_a11y::scope::Scope { } impl RuleRunner for crate::rules::jsx_a11y::tabindex_no_positive::TabindexNoPositive { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2822,8 +2834,8 @@ impl RuleRunner for crate::rules::jsx_a11y::tabindex_no_positive::TabindexNoPosi } impl RuleRunner for crate::rules::nextjs::google_font_display::GoogleFontDisplay { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2832,8 +2844,8 @@ impl RuleRunner for crate::rules::nextjs::google_font_display::GoogleFontDisplay } impl RuleRunner for crate::rules::nextjs::google_font_preconnect::GoogleFontPreconnect { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2842,8 +2854,9 @@ impl RuleRunner for crate::rules::nextjs::google_font_preconnect::GoogleFontPrec } impl RuleRunner for crate::rules::nextjs::inline_script_id::InlineScriptId { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::ImportDefaultSpecifier]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2852,8 +2865,8 @@ impl RuleRunner for crate::rules::nextjs::inline_script_id::InlineScriptId { } impl RuleRunner for crate::rules::nextjs::next_script_for_ga::NextScriptForGa { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2862,8 +2875,9 @@ impl RuleRunner for crate::rules::nextjs::next_script_for_ga::NextScriptForGa { } impl RuleRunner for crate::rules::nextjs::no_assign_module_variable::NoAssignModuleVariable { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::VariableDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2889,8 +2903,8 @@ impl RuleRunner for crate::rules::nextjs::no_before_interactive_script_outside_d } impl RuleRunner for crate::rules::nextjs::no_css_tags::NoCssTags { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2899,8 +2913,8 @@ impl RuleRunner for crate::rules::nextjs::no_css_tags::NoCssTags { } impl RuleRunner for crate::rules::nextjs::no_document_import_in_page::NoDocumentImportInPage { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ImportDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2929,8 +2943,8 @@ impl RuleRunner for crate::rules::nextjs::no_head_element::NoHeadElement { } impl RuleRunner for crate::rules::nextjs::no_head_import_in_document::NoHeadImportInDocument { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ImportDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2939,8 +2953,8 @@ impl RuleRunner for crate::rules::nextjs::no_head_import_in_document::NoHeadImpo } impl RuleRunner for crate::rules::nextjs::no_html_link_for_pages::NoHtmlLinkForPages { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2949,8 +2963,8 @@ impl RuleRunner for crate::rules::nextjs::no_html_link_for_pages::NoHtmlLinkForP } impl RuleRunner for crate::rules::nextjs::no_img_element::NoImgElement { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2959,8 +2973,8 @@ impl RuleRunner for crate::rules::nextjs::no_img_element::NoImgElement { } impl RuleRunner for crate::rules::nextjs::no_page_custom_font::NoPageCustomFont { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2969,8 +2983,8 @@ impl RuleRunner for crate::rules::nextjs::no_page_custom_font::NoPageCustomFont } impl RuleRunner for crate::rules::nextjs::no_script_component_in_head::NoScriptComponentInHead { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ImportDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2979,8 +2993,8 @@ impl RuleRunner for crate::rules::nextjs::no_script_component_in_head::NoScriptC } impl RuleRunner for crate::rules::nextjs::no_styled_jsx_in_document::NoStyledJsxInDocument { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2989,8 +3003,8 @@ impl RuleRunner for crate::rules::nextjs::no_styled_jsx_in_document::NoStyledJsx } impl RuleRunner for crate::rules::nextjs::no_sync_scripts::NoSyncScripts { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -2999,8 +3013,8 @@ impl RuleRunner for crate::rules::nextjs::no_sync_scripts::NoSyncScripts { } impl RuleRunner for crate::rules::nextjs::no_title_in_document_head::NoTitleInDocumentHead { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ImportDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3020,8 +3034,8 @@ impl RuleRunner for crate::rules::nextjs::no_typos::NoTypos { } impl RuleRunner for crate::rules::nextjs::no_unwanted_polyfillio::NoUnwantedPolyfillio { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3030,8 +3044,9 @@ impl RuleRunner for crate::rules::nextjs::no_unwanted_polyfillio::NoUnwantedPoly } impl RuleRunner for crate::rules::node::no_exports_assign::NoExportsAssign { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::AssignmentExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3040,8 +3055,8 @@ impl RuleRunner for crate::rules::node::no_exports_assign::NoExportsAssign { } impl RuleRunner for crate::rules::node::no_new_require::NoNewRequire { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NewExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3050,8 +3065,8 @@ impl RuleRunner for crate::rules::node::no_new_require::NoNewRequire { } impl RuleRunner for crate::rules::oxc::approx_constant::ApproxConstant { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NumericLiteral]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3081,8 +3096,8 @@ impl RuleRunner for crate::rules::oxc::bad_bitwise_operator::BadBitwiseOperator } impl RuleRunner for crate::rules::oxc::bad_char_at_comparison::BadCharAtComparison { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3091,8 +3106,8 @@ impl RuleRunner for crate::rules::oxc::bad_char_at_comparison::BadCharAtComparis } impl RuleRunner for crate::rules::oxc::bad_comparison_sequence::BadComparisonSequence { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3101,8 +3116,8 @@ impl RuleRunner for crate::rules::oxc::bad_comparison_sequence::BadComparisonSeq } impl RuleRunner for crate::rules::oxc::bad_min_max_func::BadMinMaxFunc { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3111,8 +3126,8 @@ impl RuleRunner for crate::rules::oxc::bad_min_max_func::BadMinMaxFunc { } impl RuleRunner for crate::rules::oxc::bad_object_literal_comparison::BadObjectLiteralComparison { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3121,8 +3136,8 @@ impl RuleRunner for crate::rules::oxc::bad_object_literal_comparison::BadObjectL } impl RuleRunner for crate::rules::oxc::bad_replace_all_arg::BadReplaceAllArg { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3141,8 +3156,8 @@ impl RuleRunner for crate::rules::oxc::const_comparisons::ConstComparisons { } impl RuleRunner for crate::rules::oxc::double_comparisons::DoubleComparisons { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::LogicalExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3151,8 +3166,8 @@ impl RuleRunner for crate::rules::oxc::double_comparisons::DoubleComparisons { } impl RuleRunner for crate::rules::oxc::erasing_op::ErasingOp { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3161,8 +3176,9 @@ impl RuleRunner for crate::rules::oxc::erasing_op::ErasingOp { } impl RuleRunner for crate::rules::oxc::misrefactored_assign_op::MisrefactoredAssignOp { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::AssignmentExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3171,8 +3187,8 @@ impl RuleRunner for crate::rules::oxc::misrefactored_assign_op::MisrefactoredAss } impl RuleRunner for crate::rules::oxc::missing_throw::MissingThrow { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NewExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3181,8 +3197,8 @@ impl RuleRunner for crate::rules::oxc::missing_throw::MissingThrow { } impl RuleRunner for crate::rules::oxc::no_accumulating_spread::NoAccumulatingSpread { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::SpreadElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3232,8 +3248,8 @@ impl RuleRunner for crate::rules::oxc::no_const_enum::NoConstEnum { } impl RuleRunner for crate::rules::oxc::no_map_spread::NoMapSpread { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3266,8 +3282,8 @@ impl RuleRunner for crate::rules::oxc::no_rest_spread_properties::NoRestSpreadPr } impl RuleRunner for crate::rules::oxc::number_arg_out_of_range::NumberArgOutOfRange { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3286,8 +3302,8 @@ impl RuleRunner for crate::rules::oxc::only_used_in_recursion::OnlyUsedInRecursi } impl RuleRunner for crate::rules::oxc::uninvoked_array_callback::UninvokedArrayCallback { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NewExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3306,8 +3322,8 @@ impl RuleRunner for crate::rules::promise::always_return::AlwaysReturn { } impl RuleRunner for crate::rules::promise::avoid_new::AvoidNew { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NewExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3316,8 +3332,9 @@ impl RuleRunner for crate::rules::promise::avoid_new::AvoidNew { } impl RuleRunner for crate::rules::promise::catch_or_return::CatchOrReturn { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::ExpressionStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3336,8 +3353,8 @@ impl RuleRunner for crate::rules::promise::no_callback_in_promise::NoCallbackInP } impl RuleRunner for crate::rules::promise::no_nesting::NoNesting { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3346,8 +3363,8 @@ impl RuleRunner for crate::rules::promise::no_nesting::NoNesting { } impl RuleRunner for crate::rules::promise::no_new_statics::NoNewStatics { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NewExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3356,8 +3373,8 @@ impl RuleRunner for crate::rules::promise::no_new_statics::NoNewStatics { } impl RuleRunner for crate::rules::promise::no_promise_in_callback::NoPromiseInCallback { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3366,8 +3383,8 @@ impl RuleRunner for crate::rules::promise::no_promise_in_callback::NoPromiseInCa } impl RuleRunner for crate::rules::promise::no_return_in_finally::NoReturnInFinally { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3376,8 +3393,8 @@ impl RuleRunner for crate::rules::promise::no_return_in_finally::NoReturnInFinal } impl RuleRunner for crate::rules::promise::no_return_wrap::NoReturnWrap { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3386,8 +3403,8 @@ impl RuleRunner for crate::rules::promise::no_return_wrap::NoReturnWrap { } impl RuleRunner for crate::rules::promise::param_names::ParamNames { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NewExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3410,8 +3427,8 @@ impl RuleRunner for crate::rules::promise::prefer_await_to_callbacks::PreferAwai } impl RuleRunner for crate::rules::promise::prefer_await_to_then::PreferAwaitToThen { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3420,8 +3437,9 @@ impl RuleRunner for crate::rules::promise::prefer_await_to_then::PreferAwaitToTh } impl RuleRunner for crate::rules::promise::prefer_catch::PreferCatch { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::ExpressionStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3440,8 +3458,8 @@ impl RuleRunner for crate::rules::promise::spec_only::SpecOnly { } impl RuleRunner for crate::rules::promise::valid_params::ValidParams { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3468,8 +3486,8 @@ impl RuleRunner for crate::rules::react::checked_requires_onchange_or_readonly:: } impl RuleRunner for crate::rules::react::exhaustive_deps::ExhaustiveDeps { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3488,8 +3506,8 @@ impl RuleRunner for crate::rules::react::forbid_elements::ForbidElements { } impl RuleRunner for crate::rules::react::forward_ref_uses_ref::ForwardRefUsesRef { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3509,8 +3527,8 @@ impl RuleRunner for crate::rules::react::iframe_missing_sandbox::IframeMissingSa } impl RuleRunner for crate::rules::react::jsx_boolean_value::JsxBooleanValue { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3550,8 +3568,8 @@ impl RuleRunner for crate::rules::react::jsx_fragments::JsxFragments { } impl RuleRunner for crate::rules::react::jsx_handler_names::JsxHandlerNames { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXAttribute]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3571,8 +3589,8 @@ impl RuleRunner for crate::rules::react::jsx_key::JsxKey { } impl RuleRunner for crate::rules::react::jsx_no_comment_textnodes::JsxNoCommentTextnodes { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXText]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3581,8 +3599,8 @@ impl RuleRunner for crate::rules::react::jsx_no_comment_textnodes::JsxNoCommentT } impl RuleRunner for crate::rules::react::jsx_no_duplicate_props::JsxNoDuplicateProps { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXOpeningElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3695,8 +3713,8 @@ impl RuleRunner for crate::rules::react::no_direct_mutation_state::NoDirectMutat } impl RuleRunner for crate::rules::react::no_find_dom_node::NoFindDomNode { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3705,8 +3723,8 @@ impl RuleRunner for crate::rules::react::no_find_dom_node::NoFindDomNode { } impl RuleRunner for crate::rules::react::no_is_mounted::NoIsMounted { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3726,8 +3744,8 @@ impl RuleRunner for crate::rules::react::no_namespace::NoNamespace { } impl RuleRunner for crate::rules::react::no_render_return_value::NoRenderReturnValue { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3736,8 +3754,8 @@ impl RuleRunner for crate::rules::react::no_render_return_value::NoRenderReturnV } impl RuleRunner for crate::rules::react::no_set_state::NoSetState { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3806,8 +3824,8 @@ impl RuleRunner for crate::rules::react::require_render_return::RequireRenderRet } impl RuleRunner for crate::rules::react::rules_of_hooks::RulesOfHooks { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -3816,8 +3834,8 @@ impl RuleRunner for crate::rules::react::rules_of_hooks::RulesOfHooks { } impl RuleRunner for crate::rules::react::self_closing_comp::SelfClosingComp { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::JSXElement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4082,8 +4100,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::typescript::no_duplicate_enum_values::NoDuplicateEnumValues { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::TSEnumBody]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4104,8 +4122,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::typescript::no_dynamic_delete::NoDynamicDelete { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::UnaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4135,8 +4153,8 @@ impl RuleRunner for crate::rules::typescript::no_empty_object_type::NoEmptyObjec } impl RuleRunner for crate::rules::typescript::no_explicit_any::NoExplicitAny { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::TSAnyKeyword]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4155,8 +4173,8 @@ impl RuleRunner for crate::rules::typescript::no_extra_non_null_assertion::NoExt } impl RuleRunner for crate::rules::typescript::no_extraneous_class::NoExtraneousClass { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::Class]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4195,8 +4213,8 @@ impl RuleRunner for crate::rules::typescript::no_implied_eval::NoImpliedEval { } impl RuleRunner for crate::rules::typescript::no_import_type_side_effects::NoImportTypeSideEffects { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ImportDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4276,8 +4294,9 @@ impl RuleRunner for crate::rules::typescript::no_mixed_enums::NoMixedEnums { } impl RuleRunner for crate::rules::typescript::no_namespace::NoNamespace { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::TSModuleDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4286,22 +4305,23 @@ impl RuleRunner for crate::rules::typescript::no_namespace::NoNamespace { } impl RuleRunner for crate::rules::typescript::no_non_null_asserted_nullish_coalescing::NoNonNullAssertedNullishCoalescing { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::LogicalExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { (Self::NODE_TYPES, Self::ANY_NODE_TYPE) } } impl RuleRunner for crate::rules::typescript::no_non_null_asserted_optional_chain::NoNonNullAssertedOptionalChain { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::TSNonNullExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { (Self::NODE_TYPES, Self::ANY_NODE_TYPE) } } impl RuleRunner for crate::rules::typescript::no_non_null_assertion::NoNonNullAssertion { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::TSNonNullExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4351,8 +4371,8 @@ impl RuleRunner for crate::rules::typescript::no_unnecessary_boolean_literal_com } impl RuleRunner for crate::rules::typescript::no_unnecessary_parameter_property_assignment::NoUnnecessaryParameterPropertyAssignment { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::MethodDefinition]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { (Self::NODE_TYPES, Self::ANY_NODE_TYPE) } } @@ -4391,8 +4411,9 @@ impl RuleRunner impl RuleRunner for crate::rules::typescript::no_unnecessary_type_constraint::NoUnnecessaryTypeConstraint { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::TSTypeParameterDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4508,8 +4529,9 @@ impl RuleRunner for crate::rules::typescript::no_unsafe_unary_minus::NoUnsafeUna } impl RuleRunner for crate::rules::typescript::no_useless_empty_export::NoUselessEmptyExport { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::ExportNamedDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4518,8 +4540,8 @@ impl RuleRunner for crate::rules::typescript::no_useless_empty_export::NoUseless } impl RuleRunner for crate::rules::typescript::no_var_requires::NoVarRequires { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4574,8 +4596,8 @@ impl RuleRunner for crate::rules::typescript::prefer_as_const::PreferAsConst { } impl RuleRunner for crate::rules::typescript::prefer_enum_initializers::PreferEnumInitializers { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::TSEnumBody]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4584,8 +4606,8 @@ impl RuleRunner for crate::rules::typescript::prefer_enum_initializers::PreferEn } impl RuleRunner for crate::rules::typescript::prefer_for_of::PreferForOf { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ForStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4609,8 +4631,8 @@ impl RuleRunner for crate::rules::typescript::prefer_function_type::PreferFuncti } impl RuleRunner for crate::rules::typescript::prefer_literal_enum_member::PreferLiteralEnumMember { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::TSEnumMember]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4619,8 +4641,9 @@ impl RuleRunner for crate::rules::typescript::prefer_literal_enum_member::Prefer } impl RuleRunner for crate::rules::typescript::prefer_namespace_keyword::PreferNamespaceKeyword { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::TSModuleDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4796,8 +4819,8 @@ impl RuleRunner for crate::rules::unicorn::catch_error_name::CatchErrorName { } impl RuleRunner for crate::rules::unicorn::consistent_assert::ConsistentAssert { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ImportDeclaration]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4818,8 +4841,9 @@ impl RuleRunner for crate::rules::unicorn::consistent_date_clone::ConsistentDate impl RuleRunner for crate::rules::unicorn::consistent_empty_array_spread::ConsistentEmptyArraySpread { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::ConditionalExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4830,8 +4854,8 @@ impl RuleRunner impl RuleRunner for crate::rules::unicorn::consistent_existence_index_check::ConsistentExistenceIndexCheck { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4926,8 +4950,8 @@ impl RuleRunner for crate::rules::unicorn::no_abusive_eslint_disable::NoAbusiveE } impl RuleRunner for crate::rules::unicorn::no_accessor_recursion::NoAccessorRecursion { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ThisExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4946,8 +4970,8 @@ impl RuleRunner for crate::rules::unicorn::no_anonymous_default_export::NoAnonym } impl RuleRunner for crate::rules::unicorn::no_array_for_each::NoArrayForEach { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4968,8 +4992,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::unicorn::no_array_reduce::NoArrayReduce { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4988,8 +5012,8 @@ impl RuleRunner for crate::rules::unicorn::no_await_expression_member::NoAwaitEx } impl RuleRunner for crate::rules::unicorn::no_await_in_promise_methods::NoAwaitInPromiseMethods { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -4998,8 +5022,8 @@ impl RuleRunner for crate::rules::unicorn::no_await_in_promise_methods::NoAwaitI } impl RuleRunner for crate::rules::unicorn::no_console_spaces::NoConsoleSpaces { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5008,8 +5032,9 @@ impl RuleRunner for crate::rules::unicorn::no_console_spaces::NoConsoleSpaces { } impl RuleRunner for crate::rules::unicorn::no_document_cookie::NoDocumentCookie { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::AssignmentExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5042,8 +5067,8 @@ impl RuleRunner for crate::rules::unicorn::no_hex_escape::NoHexEscape { } impl RuleRunner for crate::rules::unicorn::no_instanceof_array::NoInstanceofArray { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5052,8 +5077,8 @@ impl RuleRunner for crate::rules::unicorn::no_instanceof_array::NoInstanceofArra } impl RuleRunner for crate::rules::unicorn::no_instanceof_builtins::NoInstanceofBuiltins { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5074,8 +5099,8 @@ impl RuleRunner for crate::rules::unicorn::no_invalid_fetch_options::NoInvalidFe impl RuleRunner for crate::rules::unicorn::no_invalid_remove_event_listener::NoInvalidRemoveEventListener { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5084,8 +5109,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::unicorn::no_length_as_slice_end::NoLengthAsSliceEnd { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5094,8 +5119,8 @@ impl RuleRunner for crate::rules::unicorn::no_length_as_slice_end::NoLengthAsSli } impl RuleRunner for crate::rules::unicorn::no_lonely_if::NoLonelyIf { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::IfStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5104,8 +5129,8 @@ impl RuleRunner for crate::rules::unicorn::no_lonely_if::NoLonelyIf { } impl RuleRunner for crate::rules::unicorn::no_magic_array_flat_depth::NoMagicArrayFlatDepth { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5126,8 +5151,9 @@ impl RuleRunner } impl RuleRunner for crate::rules::unicorn::no_nested_ternary::NoNestedTernary { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::ConditionalExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5136,8 +5162,8 @@ impl RuleRunner for crate::rules::unicorn::no_nested_ternary::NoNestedTernary { } impl RuleRunner for crate::rules::unicorn::no_new_array::NoNewArray { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NewExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5146,8 +5172,8 @@ impl RuleRunner for crate::rules::unicorn::no_new_array::NoNewArray { } impl RuleRunner for crate::rules::unicorn::no_new_buffer::NoNewBuffer { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NewExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5156,8 +5182,8 @@ impl RuleRunner for crate::rules::unicorn::no_new_buffer::NoNewBuffer { } impl RuleRunner for crate::rules::unicorn::no_null::NoNull { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NullLiteral]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5168,8 +5194,8 @@ impl RuleRunner for crate::rules::unicorn::no_null::NoNull { impl RuleRunner for crate::rules::unicorn::no_object_as_default_parameter::NoObjectAsDefaultParameter { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::AssignmentPattern]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5190,8 +5216,8 @@ impl RuleRunner for crate::rules::unicorn::no_process_exit::NoProcessExit { impl RuleRunner for crate::rules::unicorn::no_single_promise_in_promise_methods::NoSinglePromiseInPromiseMethods { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5200,8 +5226,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::unicorn::no_static_only_class::NoStaticOnlyClass { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::Class]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5238,8 +5264,8 @@ impl RuleRunner for crate::rules::unicorn::no_this_assignment::NoThisAssignment } impl RuleRunner for crate::rules::unicorn::no_typeof_undefined::NoTypeofUndefined { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5250,8 +5276,8 @@ impl RuleRunner for crate::rules::unicorn::no_typeof_undefined::NoTypeofUndefine impl RuleRunner for crate::rules::unicorn::no_unnecessary_array_flat_depth::NoUnnecessaryArrayFlatDepth { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5270,8 +5296,8 @@ impl RuleRunner for crate::rules::unicorn::no_unnecessary_await::NoUnnecessaryAw } impl RuleRunner for crate::rules::unicorn::no_unnecessary_slice_end::NoUnnecessarySliceEnd { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5292,8 +5318,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::unicorn::no_unreadable_iife::NoUnreadableIife { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5304,8 +5330,8 @@ impl RuleRunner for crate::rules::unicorn::no_unreadable_iife::NoUnreadableIife impl RuleRunner for crate::rules::unicorn::no_useless_fallback_in_spread::NoUselessFallbackInSpread { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::LogicalExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5326,8 +5352,8 @@ impl RuleRunner for crate::rules::unicorn::no_useless_length_check::NoUselessLen impl RuleRunner for crate::rules::unicorn::no_useless_promise_resolve_reject::NoUselessPromiseResolveReject { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5346,8 +5372,8 @@ impl RuleRunner for crate::rules::unicorn::no_useless_spread::NoUselessSpread { } impl RuleRunner for crate::rules::unicorn::no_useless_switch_case::NoUselessSwitchCase { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::SwitchStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5366,8 +5392,8 @@ impl RuleRunner for crate::rules::unicorn::no_useless_undefined::NoUselessUndefi } impl RuleRunner for crate::rules::unicorn::no_zero_fractions::NoZeroFractions { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::NumericLiteral]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5397,8 +5423,9 @@ impl RuleRunner for crate::rules::unicorn::numeric_separators_style::NumericSepa } impl RuleRunner for crate::rules::unicorn::prefer_add_event_listener::PreferAddEventListener { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::AssignmentExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5417,8 +5444,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_array_find::PreferArrayFind { } impl RuleRunner for crate::rules::unicorn::prefer_array_flat::PreferArrayFlat { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5427,8 +5454,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_array_flat::PreferArrayFlat { } impl RuleRunner for crate::rules::unicorn::prefer_array_flat_map::PreferArrayFlatMap { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5437,8 +5464,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_array_flat_map::PreferArrayFla } impl RuleRunner for crate::rules::unicorn::prefer_array_index_of::PreferArrayIndexOf { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5458,8 +5485,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_array_some::PreferArraySome { } impl RuleRunner for crate::rules::unicorn::prefer_blob_reading_methods::PreferBlobReadingMethods { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5468,8 +5495,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_blob_reading_methods::PreferBl } impl RuleRunner for crate::rules::unicorn::prefer_code_point::PreferCodePoint { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5493,8 +5520,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_date_now::PreferDateNow { } impl RuleRunner for crate::rules::unicorn::prefer_dom_node_append::PreferDomNodeAppend { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5503,8 +5530,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_dom_node_append::PreferDomNode } impl RuleRunner for crate::rules::unicorn::prefer_dom_node_dataset::PreferDomNodeDataset { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5513,8 +5540,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_dom_node_dataset::PreferDomNod } impl RuleRunner for crate::rules::unicorn::prefer_dom_node_remove::PreferDomNodeRemove { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5537,8 +5564,9 @@ impl RuleRunner for crate::rules::unicorn::prefer_dom_node_text_content::PreferD } impl RuleRunner for crate::rules::unicorn::prefer_event_target::PreferEventTarget { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::IdentifierReference]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5547,8 +5575,9 @@ impl RuleRunner for crate::rules::unicorn::prefer_event_target::PreferEventTarge } impl RuleRunner for crate::rules::unicorn::prefer_global_this::PreferGlobalThis { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::IdentifierReference]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5557,8 +5586,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_global_this::PreferGlobalThis } impl RuleRunner for crate::rules::unicorn::prefer_includes::PreferIncludes { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::BinaryExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5567,15 +5596,16 @@ impl RuleRunner for crate::rules::unicorn::prefer_includes::PreferIncludes { } impl RuleRunner for crate::rules::unicorn::prefer_logical_operator_over_ternary::PreferLogicalOperatorOverTernary { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ConditionalExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { (Self::NODE_TYPES, Self::ANY_NODE_TYPE) } } impl RuleRunner for crate::rules::unicorn::prefer_math_min_max::PreferMathMinMax { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::ConditionalExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5594,8 +5624,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_math_trunc::PreferMathTrunc { } impl RuleRunner for crate::rules::unicorn::prefer_modern_dom_apis::PreferModernDomApis { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5628,8 +5658,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::unicorn::prefer_negative_index::PreferNegativeIndex { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5658,8 +5688,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_number_properties::PreferNumbe } impl RuleRunner for crate::rules::unicorn::prefer_object_from_entries::PreferObjectFromEntries { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5670,8 +5700,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_object_from_entries::PreferObj impl RuleRunner for crate::rules::unicorn::prefer_optional_catch_binding::PreferOptionalCatchBinding { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CatchParameter]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5680,8 +5710,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::unicorn::prefer_prototype_methods::PreferPrototypeMethods { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5690,8 +5720,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_prototype_methods::PreferProto } impl RuleRunner for crate::rules::unicorn::prefer_query_selector::PreferQuerySelector { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5700,8 +5730,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_query_selector::PreferQuerySel } impl RuleRunner for crate::rules::unicorn::prefer_reflect_apply::PreferReflectApply { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5710,8 +5740,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_reflect_apply::PreferReflectAp } impl RuleRunner for crate::rules::unicorn::prefer_regexp_test::PreferRegexpTest { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5720,8 +5750,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_regexp_test::PreferRegexpTest } impl RuleRunner for crate::rules::unicorn::prefer_set_has::PreferSetHas { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::VariableDeclarator]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5730,8 +5760,9 @@ impl RuleRunner for crate::rules::unicorn::prefer_set_has::PreferSetHas { } impl RuleRunner for crate::rules::unicorn::prefer_set_size::PreferSetSize { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = + &AstTypesBitset::from_types(&[AstType::StaticMemberExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5740,8 +5771,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_set_size::PreferSetSize { } impl RuleRunner for crate::rules::unicorn::prefer_spread::PreferSpread { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5750,8 +5781,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_spread::PreferSpread { } impl RuleRunner for crate::rules::unicorn::prefer_string_raw::PreferStringRaw { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::StringLiteral]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5760,8 +5791,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_string_raw::PreferStringRaw { } impl RuleRunner for crate::rules::unicorn::prefer_string_replace_all::PreferStringReplaceAll { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5770,8 +5801,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_string_replace_all::PreferStri } impl RuleRunner for crate::rules::unicorn::prefer_string_slice::PreferStringSlice { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5782,8 +5813,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_string_slice::PreferStringSlic impl RuleRunner for crate::rules::unicorn::prefer_string_starts_ends_with::PreferStringStartsEndsWith { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5792,8 +5823,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::unicorn::prefer_string_trim_start_end::PreferStringTrimStartEnd { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5802,8 +5833,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_string_trim_start_end::PreferS } impl RuleRunner for crate::rules::unicorn::prefer_structured_clone::PreferStructuredClone { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5812,8 +5843,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_structured_clone::PreferStruct } impl RuleRunner for crate::rules::unicorn::prefer_type_error::PreferTypeError { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::ThrowStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5822,8 +5853,8 @@ impl RuleRunner for crate::rules::unicorn::prefer_type_error::PreferTypeError { } impl RuleRunner for crate::rules::unicorn::require_array_join_separator::RequireArrayJoinSeparator { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5832,8 +5863,8 @@ impl RuleRunner for crate::rules::unicorn::require_array_join_separator::Require } impl RuleRunner for crate::rules::unicorn::require_number_to_fixed_digits_argument::RequireNumberToFixedDigitsArgument { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { (Self::NODE_TYPES, Self::ANY_NODE_TYPE) } } @@ -5841,8 +5872,8 @@ impl RuleRunner for crate::rules::unicorn::require_number_to_fixed_digits_argume impl RuleRunner for crate::rules::unicorn::require_post_message_target_origin::RequirePostMessageTargetOrigin { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5851,8 +5882,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::unicorn::switch_case_braces::SwitchCaseBraces { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::SwitchStatement]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5873,8 +5904,8 @@ impl RuleRunner } impl RuleRunner for crate::rules::unicorn::throw_new_error::ThrowNewError { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { @@ -5913,8 +5944,8 @@ impl RuleRunner for crate::rules::vitest::prefer_to_be_falsy::PreferToBeFalsy { } impl RuleRunner for crate::rules::vitest::prefer_to_be_object::PreferToBeObject { - const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::new(); - const ANY_NODE_TYPE: bool = true; + const NODE_TYPES: &AstTypesBitset = &AstTypesBitset::from_types(&[AstType::CallExpression]); + const ANY_NODE_TYPE: bool = false; #[inline] fn types_info(&self) -> (&'static AstTypesBitset, bool) { diff --git a/tasks/linter_codegen/src/main.rs b/tasks/linter_codegen/src/main.rs index 8d25345f63cd1..fbc4be569bd7e 100644 --- a/tasks/linter_codegen/src/main.rs +++ b/tasks/linter_codegen/src/main.rs @@ -161,9 +161,12 @@ fn find_rule_source_file(root: &Path, module_path: &str) -> Option Option { // Strategy: prefer a single top-level `if let AstKind::... = node.kind()` chain. - // If not present, try a single top-level `match node.kind()`. + // If not present, look for a top-level `let AstKind::... = node.kind() else { ... };` in run. + // If still not present, try a single top-level `match node.kind()`. let variants: BTreeSet = if let Some(det) = IfElseKindDetector::from_file(file) { det.variants + } else if let Some(det) = LetElseDetector::from_file(file) { + det.variants } else if let Some(det) = MatchKindDetector::from_file(file) { det.variants } else { @@ -243,6 +246,61 @@ fn collect_if_chain_variants(ifexpr: &ExprIf, out: &mut BTreeSet) -> boo } } +/// Detects top-level `let AstKind::... = node.kind() else { ... };` statements in `run`. +struct LetElseDetector { + variants: BTreeSet, +} + +impl LetElseDetector { + fn from_file(file: &File) -> Option { + for item in &file.items { + let syn::Item::Impl(imp) = item else { continue }; + for impl_item in &imp.items { + let syn::ImplItem::Fn(func) = impl_item else { continue }; + if func.sig.ident != "run" { + continue; + } + let mut variants = BTreeSet::new(); + for (idx, stmt) in func.block.stmts.iter().enumerate() { + if let Stmt::Local(local) = stmt { + // Must have initializer and an else branch (let-else) + if let Some(init) = &local.init { + // Check RHS is `node.kind()` + if !is_node_kind_call(&init.expr) { + continue; + } + // Ensure there is an else branch and it contains only a single `return` statement + let has_else_return = init + .diverge + .as_ref() + .is_some_and(|d| else_expr_is_only_return(&d.1)); + if !has_else_return { + continue; + } + // Ensure there are no top-level `if` statements before this let-else + if func + .block + .stmts + .iter() + .take(idx) + .any(|s| matches!(s, Stmt::Expr(Expr::If(_), _))) + { + return None; + } + // Ensure that else + let _ = extract_variants_from_pat(&local.pat, &mut variants); + } + } + } + if !variants.is_empty() { + return Some(Self { variants }); + } + } + } + None + } +} + /// Detects top-level `match node.kind()` expressions in the `run` method. struct MatchKindDetector { variants: BTreeSet, @@ -308,6 +366,18 @@ fn arm_body_has_code(expr: &Expr) -> bool { } } +fn else_expr_is_only_return(expr: &Expr) -> bool { + if let Expr::Block(b) = expr { + let stmts = &b.block.stmts; + if stmts.len() != 1 { + return false; + } + matches!(stmts[0], Stmt::Expr(Expr::Return(_), _)) + } else { + false + } +} + fn extract_variants_from_if_condition(cond: &Expr, out: &mut BTreeSet) -> bool { let Expr::Let(let_expr) = cond else { return false }; // RHS must be `node.kind()`