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
fix!: no-unused-vars varsIgnorePattern
behavior with catch arguments
#17932
Conversation
✅ Deploy Preview for docs-eslint ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
varsIgnorePattern
behaviorvarsIgnorePattern
behavior with catch arguments
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. Would like @mdjermanovic to review before merging.
Oops, one more request: because this is a breaking change, can you please add an entry into migrate-to-9.0.0.md under the "Breaking Changes for Users" section? |
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.
Looking good. Just cleaned up the wording on the migration guide with a few suggestions.
docs/src/use/migrate-to-9.0.0.md
Outdated
@@ -28,6 +28,7 @@ The lists below are ordered roughly by the number of users each change is expect | |||
* [Case-sensitive flags in `no-invalid-regexp`](#no-invalid-regexp) | |||
* [Stricter `/* exported */` parsing](#exported-parsing) | |||
* [`"eslint:recommended"` and `"eslint:all"` strings no longer accepted in flat config](#string-config) | |||
* [Behavior of `varsIgnorePattern` option of `no-unused-vars` rule with catch arguments](#vars-ignore-pattern) |
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.
* [Behavior of `varsIgnorePattern` option of `no-unused-vars` rule with catch arguments](#vars-ignore-pattern) | |
* [`varsIgnorePattern` option of `no-unused-vars` no longer applies to catch arguments](#vars-ignore-pattern) |
docs/src/use/migrate-to-9.0.0.md
Outdated
@@ -236,6 +237,25 @@ export default [ | |||
|
|||
**Related issue(s):** [#17488](https://github.com/eslint/eslint/issues/17488) | |||
|
|||
## <a name="vars-ignore-pattern"></a> Behavior of `varsIgnorePattern` option of `no-unused-vars` rule with catch arguments |
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.
## <a name="vars-ignore-pattern"></a> Behavior of `varsIgnorePattern` option of `no-unused-vars` rule with catch arguments | |
## <a name="vars-ignore-pattern"></a> `varsIgnorePattern` option of `no-unused-vars` no longer applies to catch arguments |
docs/src/use/migrate-to-9.0.0.md
Outdated
In previous versions of ESLint, `varsIgnorePattern` option of `no-unused-vars`, that is used to restrict some specified variable to be reported, used to ignore all variables that machtes the specified pattern except `function` arguments because there is a seperate option to ignore them called `argsIgnorePattern` and same was expected for `caughtErrorsIgnorePattern` option but `varsIgnorePattern` was also ignoring `catch` block arguments. | ||
|
||
This behavior has been fixed in ESLint v9.0.0, that means `varsIgnorePattern` option don't get applied to both `function` and `catch` block arguments. |
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.
In previous versions of ESLint, `varsIgnorePattern` option of `no-unused-vars`, that is used to restrict some specified variable to be reported, used to ignore all variables that machtes the specified pattern except `function` arguments because there is a seperate option to ignore them called `argsIgnorePattern` and same was expected for `caughtErrorsIgnorePattern` option but `varsIgnorePattern` was also ignoring `catch` block arguments. | |
This behavior has been fixed in ESLint v9.0.0, that means `varsIgnorePattern` option don't get applied to both `function` and `catch` block arguments. | |
In previous versions of ESLint, the `varsIgnorePattern` option of `no-unused-vars` incorrectly ignored errors specified in a `catch` clause. In ESLint v9.0.0, `varsIgnorePattern` no longer applies to errors in `catch` clauses. For example: |
|
||
``` | ||
|
||
**Related issue(s):** [#17540](https://github.com/eslint/eslint/issues/17540) |
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.
**Related issue(s):** [#17540](https://github.com/eslint/eslint/issues/17540) | |
**To address:** If you want to specify ignore patterns for `catch` clause variable names, use the `caughtErrorsIgnorePattern` option in addition to `varsIgnorePattern`. | |
**Related issue(s):** [#17540](https://github.com/eslint/eslint/issues/17540) |
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!
we could also add
"none"
value to vars setting, just like args and catchErrors
The original issue also mentions adding "none"
for vars
, should we support this?
I think that should be a separate issue. |
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!
varsIgnorePattern
behavior with catch argumentsvarsIgnorePattern
behavior with catch arguments
Upgrade to eslint v9 flat config. Custom eslint rules have been tested and work in the new config file. Removed unused vars in try catch blocks due to[ breaking change in eslint v9](eslint/eslint#17932). Use [globals](https://www.npmjs.com/package/globals) to include [globals env](https://eslint.org/docs/latest/use/configure/language-options#predefined-global-variables)
Prerequisites checklist
What is the purpose of this pull request? (put an "X" next to an item)
[ ] Documentation update
[x] Bug fix (template)
[ ] New rule (template)
[ ] Changes an existing rule (template)
[ ] Add autofix to a rule
[ ] Add a CLI option
[ ] Add something to the core
[ ] Other, please explain:
Tell us about your environment (
npx eslint --env-info
):What parser are you using (place an "X" next to just one item)?
[x]
Default (Espree)
[ ]
@typescript-eslint/parser
[ ]
@babel/eslint-parser
[ ]
vue-eslint-parser
[ ]
@angular-eslint/template-parser
[ ]
Other
Please show your full configuration:
Configuration
What did you do? Please include the actual source code causing the issue.
What did you expect to happen?
eslint won't ignore the
err
argument.What actually happened? Please include the actual, raw output from ESLint.
eslint ignored the
err
argument by following thevarsIgnorePattern
.Fixes: #17540