New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add ternaryOperandBinaryExpressions option to no-extra-parens rule #17270
Conversation
conditionalTernary
option to no-extra-parens
ru;econditionalTernary
option to no-extra-parens
rule
I agree there should be an option in the As currently implemented in this PR, the new option allows some parentheses that |
I improved the coverage and both of the ones you mentioned have been resolved. But please let me know if there are other cases that are not covered |
fbf3c0d
to
b12f5e8
Compare
I think the option name should be something like |
My confusion is that the option allows not only |
I think it's fine to use "binary" here. It doesn't match ESTree's representation, but logical operators are binary operators, and the existing option |
02c3469
to
038e929
Compare
conditionalTernary
option to no-extra-parens
ruleternaryOperandBinaryExpressions
option to no-extra-parens
rule
Hi @kecrily!, thanks for the Pull Request The pull request title isn't properly formatted. We ask that you update the message to match this format, as we use it to generate changelogs and automate releases.
To Fix: You can fix this problem by clicking 'Edit' next to the pull request title at the top of this page. Read more about contributing to ESLint here |
ternaryOperandBinaryExpressions
option to no-extra-parens
rule
Marking accepted as this option fixes conflicts with the |
✅ Deploy Preview for docs-eslint ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks!
I'll leave this open until today's release in case anyone else would like to review it.
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [eslint](https://eslint.org) ([source](https://togithub.com/eslint/eslint)) | devDependencies | minor | [`8.43.0` -> `8.44.0`](https://renovatebot.com/diffs/npm/eslint/8.43.0/8.44.0) | --- ### Release Notes <details> <summary>eslint/eslint (eslint)</summary> ### [`v8.44.0`](https://togithub.com/eslint/eslint/releases/tag/v8.44.0) [Compare Source](https://togithub.com/eslint/eslint/compare/v8.43.0...v8.44.0) #### Features - [`1766771`](https://togithub.com/eslint/eslint/commit/176677180a4a1209fc192771521c9192e1f67578) feat: add `es2023` and `es2024` environments (#​1[eslint/eslint#17328)) (Milos Djermanovic) - [`4c50400`](https://togithub.com/eslint/eslint/commit/4c5040022639ae804c15b366afc6e64982bd8ae3) feat: add `ecmaVersion: 2024`, regexp `v` flag parsing (#​1[eslint/eslint#17324)) (Milos Djermanovic) - [`4d411e4`](https://togithub.com/eslint/eslint/commit/4d411e4c7063274d6d346f1b7ee46f7575d0bbd2) feat: add ternaryOperandBinaryExpressions option to no-extra-parens rule (#​1[eslint/eslint#17270)) (Percy Ma) - [`c8b1f4d`](https://togithub.com/eslint/eslint/commit/c8b1f4d61a256727755d561bf53f889b6cd712e0) feat: Move `parserServices` to `SourceCode` (#​1[eslint/eslint#17311)) (Milos Djermanovic) - [`ef6e24e`](https://togithub.com/eslint/eslint/commit/ef6e24e42670f321d996948623846d9caaedac99) feat: treat unknown nodes as having the lowest precedence (#​1[eslint/eslint#17302)) (Brad Zacher) - [`1866e1d`](https://togithub.com/eslint/eslint/commit/1866e1df6175e4ba0ae4a0d88dc3c956bb310035) feat: allow flat config files to export a Promise (#​1[eslint/eslint#17301)) (Milos Djermanovic) #### Bug Fixes - [`a36bcb6`](https://togithub.com/eslint/eslint/commit/a36bcb67f26be42c794797d0cc9948b9cfd4ff71) fix: no-unused-vars false positive with logical assignment operators (#​1[eslint/eslint#17320)) (Gweesin Chan) - [`7620b89`](https://togithub.com/eslint/eslint/commit/7620b891e81c234f30f9dbcceb64a05fd0dde65e) fix: Remove `no-unused-labels` autofix before potential directives (#​1[eslint/eslint#17314)) (Francesco Trotta) - [`391ed38`](https://togithub.com/eslint/eslint/commit/391ed38b09bd1a3abe85db65b8fcda980ab3d6f4) fix: Remove `no-extra-semi` autofix before potential directives (#​1[eslint/eslint#17297)) (Francesco Trotta) #### Documentation - [`526e911`](https://togithub.com/eslint/eslint/commit/526e91106e6fe101578e9478a9d7f4844d4f72ac) docs: resubmit pr 17115 doc changes (#​1[eslint/eslint#17291)) (唯然) - [`e1314bf`](https://togithub.com/eslint/eslint/commit/e1314bf85a52bb0d05b1c9ca3b4c1732bae22172) docs: Integration section and tutorial (#​1[eslint/eslint#17132)) (Ben Perlmutter) - [`19a8c5d`](https://togithub.com/eslint/eslint/commit/19a8c5d84596a9f7f2aa428c1696ba86daf854e6) docs: Update README (GitHub Actions Bot) #### Chores - [`49e46ed`](https://togithub.com/eslint/eslint/commit/49e46edf3c8dc71d691a97fc33b63ed80ae0db0c) chore: upgrade [@​eslint/js](https://togithub.com/eslint/js)[@​8](https://togithub.com/8).44.0 (#​1[eslint/eslint#17329)) (Milos Djermanovic) - [`a1cb642`](https://togithub.com/eslint/eslint/commit/a1cb6421f9d185901cd99e5f696e912226ef6632) chore: package.json update for [@​eslint/js](https://togithub.com/eslint/js) release (ESLint Jenkins) - [`840a264`](https://togithub.com/eslint/eslint/commit/840a26462bbf6c27c52c01b85ee2018062157951) test: More test cases for no-case-declarations (#​1[eslint/eslint#17315)) (Elian Cordoba) - [`e6e74f9`](https://togithub.com/eslint/eslint/commit/e6e74f9eef0448129dd4775628aba554a2d8c8c9) chore: package.json update for eslint-config-eslint release (ESLint Jenkins) - [`eb3d794`](https://togithub.com/eslint/eslint/commit/eb3d7946e1e9f70254008744dba2397aaa730114) chore: upgrade semver@7.5.3 (#​1[eslint/eslint#17323)) (Ziyad El Abid) - [`cf88439`](https://togithub.com/eslint/eslint/commit/cf884390ad8071d88eae05df9321100f1770363d) chore: upgrade optionator@0.9.3 (#​1[eslint/eslint#17319)) (Milos Djermanovic) - [`9718a97`](https://togithub.com/eslint/eslint/commit/9718a9781d69d2c40b68c631aed97700b32c0082) refactor: remove unnecessary code in `flat-eslint.js` (#​1[eslint/eslint#17308)) (Milos Djermanovic) - [`f82e56e`](https://togithub.com/eslint/eslint/commit/f82e56e9acfb9562ece76441472d5657d7d5e296) perf: various performance improvements (#​1[eslint/eslint#17135)) (moonlightaria) - [`da81e66`](https://togithub.com/eslint/eslint/commit/da81e66e22b4f3d3fe292cf70c388753304deaad) chore: update eslint-plugin-jsdoc to 46.2.5 (#​1[eslint/eslint#17245)) (唯然) - [`b991640`](https://togithub.com/eslint/eslint/commit/b991640176d5dce4750f7cc71c56cd6f284c882f) chore: switch eslint-config-eslint to the flat format (#​1[eslint/eslint#17247)) (唯然) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xNTUuMCIsInVwZGF0ZWRJblZlciI6IjM1LjE1OS4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: Renovate Bot <bot@renovateapp.com>
Prerequisites checklist
What is the purpose of this pull request? (put an "X" next to an item)
[x] Documentation update
[ ] Bug fix (template)
[ ] New rule (template)
[x] Changes an existing rule (template)
[ ] Add autofix to a rule
[ ] Add a CLI option
[ ] Add something to the core
[ ] Other, please explain:
What changes did you make? (Give an overview)
Such code may not be clear to readers who do not know enough about priorities, whether it is
or
To better express the priority, one may choose to add parentheses to it and use
no-mixed-operators
rule withgroups: [['||' , '&&', '?:']]
option to check it.However,
no-extra-parens
currently reports an error for first case. If there are no parentheses, thenno-mixed-operators
rule will report another error.What rule do you want to change?
no-extra-parens
What change do you want to make (place an "X" next to just one item)?
[ ] Generate more warnings
[x] Generate fewer warnings
[ ] Implement autofix
[ ] Implement suggestions
How will the change be implemented (place an "X" next to just one item)?
[x] A new option
[ ] A new default behavior
[ ] Other
Please provide some example code that this change will affect:
What does the rule currently do for this code?
What will the rule do after it's changed?
Is there anything you'd like reviewers to focus on?