build(eslint): drop the three React Compiler rules that cannot fire on 7.1.1
react-hooks/exhaustive-effect-dependencies, memoized-effect-dependencies and rule-suppression were switched on in E32 "for the plugin version that wires them up". Read in the plugin source and probed (E32 review): the first's validation is compiled off, nothing emits the second's category, and lint mode hands the third no suppression rules. 0 hits by construction — a rule that cannot report reads as coverage it does not give. The comment keeps their names and why, so a plugin upgrade can re-check them.
This commit is contained in:
@@ -544,27 +544,23 @@ export default tseslint.config(
|
||||
// the compiler SKIPS, silently — `panicThreshold` is "none" and there is no logger, so a lint
|
||||
// error is the only place the skip is said out loud. `todo` is the compiler's "cannot lower
|
||||
// this shape yet" (E32 S4 rewrote all 31 try statements it found); the rest had 0 hits when
|
||||
// switched on. Most are tripwires, but three cannot report anything under
|
||||
// eslint-plugin-react-hooks 7.1.1 (E32 review, read in its source and probed):
|
||||
// `exhaustive-effect-dependencies` (its validation is compiled off — a missing effect dependency
|
||||
// is reported by the classic `exhaustive-deps` only), `memoized-effect-dependencies` (nothing
|
||||
// emits its category) and `rule-suppression` (lint mode hands it no suppression rules, so an
|
||||
// inline disable is never named). They stay on for the plugin version that wires them up; a
|
||||
// function the compiler skips over a suppression is caught by the coverage ratchet below.
|
||||
// switched on, and are tripwires. Three more exist but cannot report anything under
|
||||
// eslint-plugin-react-hooks 7.1.1 (E32 review, read in its source and probed), so they are not
|
||||
// listed: `exhaustive-effect-dependencies` (its validation is compiled off — the classic
|
||||
// `exhaustive-deps` reports a missing effect dependency), `memoized-effect-dependencies` (nothing
|
||||
// emits its category) and `rule-suppression` (lint mode hands it no suppression rules). A
|
||||
// function the compiler skips over a suppression is caught by the coverage contract below.
|
||||
// `todo` does NOT see every such shape — a conditional, a loop
|
||||
// or an optional call inside a try skips the function with no lint hit at all — so the full
|
||||
// per-function picture is components/compilerCoverage.contract.test.ts.
|
||||
"react-hooks/todo": "error",
|
||||
"react-hooks/memo-dependencies": "error",
|
||||
"react-hooks/rule-suppression": "error",
|
||||
"react-hooks/invariant": "error",
|
||||
"react-hooks/syntax": "error",
|
||||
"react-hooks/void-use-memo": "error",
|
||||
"react-hooks/component-hook-factories": "error",
|
||||
"react-hooks/capitalized-calls": "error",
|
||||
"react-hooks/hooks": "error",
|
||||
"react-hooks/memoized-effect-dependencies": "error",
|
||||
"react-hooks/exhaustive-effect-dependencies": "error",
|
||||
"react-hooks/no-deriving-state-in-effects": "error",
|
||||
// eslint-plugin-react-hooks 7's `recommended` is no longer two rules — it carries the whole
|
||||
// React Compiler rule set (E27 S1). On this codebase that landed 283 findings. 66 were fixed or
|
||||
|
||||
@@ -92,7 +92,6 @@
|
||||
"react-hooks/config",
|
||||
"react-hooks/error-boundaries",
|
||||
"react-hooks/exhaustive-deps",
|
||||
"react-hooks/exhaustive-effect-dependencies",
|
||||
"react-hooks/gating",
|
||||
"react-hooks/globals",
|
||||
"react-hooks/hooks",
|
||||
@@ -100,12 +99,10 @@
|
||||
"react-hooks/incompatible-library",
|
||||
"react-hooks/invariant",
|
||||
"react-hooks/memo-dependencies",
|
||||
"react-hooks/memoized-effect-dependencies",
|
||||
"react-hooks/no-deriving-state-in-effects",
|
||||
"react-hooks/preserve-manual-memoization",
|
||||
"react-hooks/purity",
|
||||
"react-hooks/refs",
|
||||
"react-hooks/rule-suppression",
|
||||
"react-hooks/rules-of-hooks",
|
||||
"react-hooks/set-state-in-effect",
|
||||
"react-hooks/set-state-in-render",
|
||||
@@ -185,7 +182,6 @@
|
||||
"react-hooks/config",
|
||||
"react-hooks/error-boundaries",
|
||||
"react-hooks/exhaustive-deps",
|
||||
"react-hooks/exhaustive-effect-dependencies",
|
||||
"react-hooks/gating",
|
||||
"react-hooks/globals",
|
||||
"react-hooks/hooks",
|
||||
@@ -193,12 +189,10 @@
|
||||
"react-hooks/incompatible-library",
|
||||
"react-hooks/invariant",
|
||||
"react-hooks/memo-dependencies",
|
||||
"react-hooks/memoized-effect-dependencies",
|
||||
"react-hooks/no-deriving-state-in-effects",
|
||||
"react-hooks/preserve-manual-memoization",
|
||||
"react-hooks/purity",
|
||||
"react-hooks/refs",
|
||||
"react-hooks/rule-suppression",
|
||||
"react-hooks/rules-of-hooks",
|
||||
"react-hooks/set-state-in-effect",
|
||||
"react-hooks/set-state-in-render",
|
||||
@@ -961,7 +955,6 @@
|
||||
"react-hooks/config": [2],
|
||||
"react-hooks/error-boundaries": [2],
|
||||
"react-hooks/exhaustive-deps": [1],
|
||||
"react-hooks/exhaustive-effect-dependencies": [2],
|
||||
"react-hooks/gating": [2],
|
||||
"react-hooks/globals": [2],
|
||||
"react-hooks/hooks": [2],
|
||||
@@ -969,12 +962,10 @@
|
||||
"react-hooks/incompatible-library": [1],
|
||||
"react-hooks/invariant": [2],
|
||||
"react-hooks/memo-dependencies": [2],
|
||||
"react-hooks/memoized-effect-dependencies": [2],
|
||||
"react-hooks/no-deriving-state-in-effects": [2],
|
||||
"react-hooks/preserve-manual-memoization": [2],
|
||||
"react-hooks/purity": [2],
|
||||
"react-hooks/refs": [2],
|
||||
"react-hooks/rule-suppression": [2],
|
||||
"react-hooks/rules-of-hooks": [2],
|
||||
"react-hooks/set-state-in-effect": [2],
|
||||
"react-hooks/set-state-in-render": [2],
|
||||
@@ -1203,7 +1194,6 @@
|
||||
"react-hooks/config",
|
||||
"react-hooks/error-boundaries",
|
||||
"react-hooks/exhaustive-deps",
|
||||
"react-hooks/exhaustive-effect-dependencies",
|
||||
"react-hooks/gating",
|
||||
"react-hooks/globals",
|
||||
"react-hooks/hooks",
|
||||
@@ -1211,12 +1201,10 @@
|
||||
"react-hooks/incompatible-library",
|
||||
"react-hooks/invariant",
|
||||
"react-hooks/memo-dependencies",
|
||||
"react-hooks/memoized-effect-dependencies",
|
||||
"react-hooks/no-deriving-state-in-effects",
|
||||
"react-hooks/preserve-manual-memoization",
|
||||
"react-hooks/purity",
|
||||
"react-hooks/refs",
|
||||
"react-hooks/rule-suppression",
|
||||
"react-hooks/rules-of-hooks",
|
||||
"react-hooks/set-state-in-effect",
|
||||
"react-hooks/set-state-in-render",
|
||||
|
||||
Reference in New Issue
Block a user