From 2035423569f326f4d84f205ecaad9f660a5440f5 Mon Sep 17 00:00:00 2001 From: Eva1ent Date: Thu, 9 Nov 2023 14:35:09 +0800 Subject: [PATCH] refactor: improve jsx/no-leaked-conditional-rendering --- cspell.json | 1 + package.json | 2 +- packages/ast/package.json | 2 +- packages/core/package.json | 2 +- packages/eslint-plugin-debug/package.json | 2 +- packages/eslint-plugin-hooks/package.json | 2 +- packages/eslint-plugin-jsx/package.json | 2 +- .../no-leaked-conditional-rendering.spec.ts | 344 ++++++++++++++++++ .../rules/no-leaked-conditional-rendering.ts | 66 ++-- .../package.json | 2 +- packages/eslint-plugin-react/package.json | 2 +- packages/eslint-plugin/package.json | 2 +- packages/jsx/package.json | 2 +- packages/jsx/src/value.ts | 8 +- packages/shared/package.json | 2 +- packages/tools/package.json | 2 +- packages/types/package.json | 2 +- 17 files changed, 404 insertions(+), 41 deletions(-) diff --git a/cspell.json b/cspell.json index 1901464ff..97d8d50a5 100644 --- a/cspell.json +++ b/cspell.json @@ -29,6 +29,7 @@ "bimap", "birecord", "clippy", + "consequents", "declarators", "deepmerge", "dprint", diff --git a/package.json b/package.json index 715aa62d3..f8e059d76 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eslint-react/monorepo", - "version": "0.7.4", + "version": "0.7.5", "description": "ESLint plugin for React function components with TypeScript, built (mostly) from scratch.", "keywords": [ "eslint", diff --git a/packages/ast/package.json b/packages/ast/package.json index f2ef3e0f8..4ed3a71eb 100644 --- a/packages/ast/package.json +++ b/packages/ast/package.json @@ -1,6 +1,6 @@ { "name": "@eslint-react/ast", - "version": "0.7.4", + "version": "0.7.5", "description": "AST Utility Module for Static Analysis of TypeScript", "homepage": "https://github.com/eslint-react/eslint-react", "bugs": { diff --git a/packages/core/package.json b/packages/core/package.json index 1375b6240..f312f237f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@eslint-react/core", - "version": "0.7.4", + "version": "0.7.5", "description": "AST Utility Module for Static Analysis of React core API and Patterns.", "homepage": "https://github.com/eslint-react/eslint-react", "bugs": { diff --git a/packages/eslint-plugin-debug/package.json b/packages/eslint-plugin-debug/package.json index aef00ce81..2d0c71c83 100644 --- a/packages/eslint-plugin-debug/package.json +++ b/packages/eslint-plugin-debug/package.json @@ -1,6 +1,6 @@ { "name": "@eslint-react/eslint-plugin-debug", - "version": "0.7.4", + "version": "0.7.5", "description": "Debug specific rules for @eslint-react/eslint-plugin", "homepage": "https://github.com/eslint-react/eslint-react", "bugs": { diff --git a/packages/eslint-plugin-hooks/package.json b/packages/eslint-plugin-hooks/package.json index 893adbbfe..8e2f89c28 100644 --- a/packages/eslint-plugin-hooks/package.json +++ b/packages/eslint-plugin-hooks/package.json @@ -1,6 +1,6 @@ { "name": "@eslint-react/eslint-plugin-hooks", - "version": "0.7.4", + "version": "0.7.5", "description": "Hooks specific rules for @eslint-react/eslint-plugin", "homepage": "https://github.com/eslint-react/eslint-react", "bugs": { diff --git a/packages/eslint-plugin-jsx/package.json b/packages/eslint-plugin-jsx/package.json index 3e42c074d..07d655c7c 100644 --- a/packages/eslint-plugin-jsx/package.json +++ b/packages/eslint-plugin-jsx/package.json @@ -1,6 +1,6 @@ { "name": "@eslint-react/eslint-plugin-jsx", - "version": "0.7.4", + "version": "0.7.5", "description": "JSX specific rules for @eslint-react/eslint-plugin", "homepage": "https://github.com/eslint-react/eslint-react", "bugs": { diff --git a/packages/eslint-plugin-jsx/src/rules/no-leaked-conditional-rendering.spec.ts b/packages/eslint-plugin-jsx/src/rules/no-leaked-conditional-rendering.spec.ts index 5f77ceb95..bc874adc3 100644 --- a/packages/eslint-plugin-jsx/src/rules/no-leaked-conditional-rendering.spec.ts +++ b/packages/eslint-plugin-jsx/src/rules/no-leaked-conditional-rendering.spec.ts @@ -87,6 +87,123 @@ ruleTester.run(RULE_NAME, rule, { ) } `, + dedent` + const foo = Math.random() > 0.5; + const bar = 0; + function App() { + return ( +