-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Closed
Labels
accepting prsGo ahead, send a pull request that resolves this issueGo ahead, send a pull request that resolves this issueenhancement: plugin rule optionNew rule option for an existing eslint-plugin ruleNew rule option for an existing eslint-plugin rulelocked due to agePlease open a new issue if you'd like to say more. See https://typescript-eslint.io/contributing.Please open a new issue if you'd like to say more. See https://typescript-eslint.io/contributing.package: eslint-pluginIssues related to @typescript-eslint/eslint-pluginIssues related to @typescript-eslint/eslint-plugin
Description
Before You File a Proposal Please Confirm You Have Done The Following...
- I have searched for related issues and found none that match my proposal.
- I have searched the current rule list and found no rules that match my proposal.
- I have read the FAQ and my problem is not listed.
My proposal is suitable for this project
- I believe my proposal would be useful to the broader TypeScript community (meaning it is not a niche proposal).
Link to the rule's documentation
https://typescript-eslint.io/rules/no-unnecessary-condition
Description
The allowConstantLoopConditions
option is disabled by default, because cases like while (shouldRun = true)
are likely errors. But that means the rule option also flags cases like while (true)
. Which is more of a stylistic preference, I think.
How about making the option more granular:
'never'
: same as today'sfalse
'only-simple'
: allow "simple" cases liketrue
(a better name would be nice!)'always'
: same as today'strue
...and in future major version, breaking change to:
- current:
'never'
is be the default value and aliased byfalse
(to not be a breaking change) - next:
'only-simple'
becomes the default value
Fail
let shouldRun = true;
while (shouldRun = true) { /* ... */ }
Pass
while (true) { /* ... */ }
Additional Info
I stumbled onto this in https://github.com/JoshuaKGoldberg/template-typescript-node-package/pull/469/files#diff-e1ce717e1179a0db14e90ec5374768a206651ca807db58352991eb7895ed7c9cR64
danvk
Metadata
Metadata
Assignees
Labels
accepting prsGo ahead, send a pull request that resolves this issueGo ahead, send a pull request that resolves this issueenhancement: plugin rule optionNew rule option for an existing eslint-plugin ruleNew rule option for an existing eslint-plugin rulelocked due to agePlease open a new issue if you'd like to say more. See https://typescript-eslint.io/contributing.Please open a new issue if you'd like to say more. See https://typescript-eslint.io/contributing.package: eslint-pluginIssues related to @typescript-eslint/eslint-pluginIssues related to @typescript-eslint/eslint-plugin