From 1171e00a3c2d6a1374472f43cef33614bcdf7673 Mon Sep 17 00:00:00 2001 From: "Alexander S." Date: Sat, 28 Dec 2024 17:34:58 +0100 Subject: [PATCH] fix(linter): disable `react/rules-of-hooks` for vue and svelte files (#8165) because of https://github.com/oxc-project/oxc/issues/8003 I used the FrameworkFlags in hope they are only active in `.vue` and `.svelte` files. --- crates/oxc_linter/src/rules/react/rules_of_hooks.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/crates/oxc_linter/src/rules/react/rules_of_hooks.rs b/crates/oxc_linter/src/rules/react/rules_of_hooks.rs index e6eb833f6882a..ac670d111b1f3 100644 --- a/crates/oxc_linter/src/rules/react/rules_of_hooks.rs +++ b/crates/oxc_linter/src/rules/react/rules_of_hooks.rs @@ -16,7 +16,7 @@ use crate::{ context::LintContext, rule::Rule, utils::{is_react_component_or_hook_name, is_react_function_call, is_react_hook}, - AstNode, + AstNode, FrameworkFlags, }; mod diagnostics { @@ -99,7 +99,7 @@ pub struct RulesOfHooks; declare_oxc_lint!( /// ### What it does /// - /// This enforcecs the Rules of Hooks + /// This enforces the Rules of Hooks /// /// /// @@ -108,6 +108,12 @@ declare_oxc_lint!( ); impl Rule for RulesOfHooks { + fn should_run(&self, ctx: &crate::rules::ContextHost) -> bool { + // disable this rule in vue/nuxt and svelte(kit) files + // top level useFunction are very common + !ctx.frameworks().contains(FrameworkFlags::SvelteKit | FrameworkFlags::Nuxt) + } + fn run<'a>(&self, node: &AstNode<'a>, ctx: &LintContext<'a>) { let AstKind::CallExpression(call) = node.kind() else { return };