Fix: no-extra-label autofix should not remove labels used elsewhere #7885
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What is the purpose of this pull request? (put an "X" next to item)
[x] Bug fix
Tell us about your environment
What parser (default, Babel-ESLint, etc.) are you using?
default
Please show your full configuration:
(none)
What did you do? Please include the actual source code causing the issue.
What did you expect to happen?
I expected an error to be reported on line 2, and the code to be fixed to
What actually happened? Please include the actual, raw output from ESLint.
An error was reported on line 2 as expected, but the code was fixed to
...which is a syntax error, because the
A
label no longer exists even though it's used elsewhere.What changes did you make? (Give an overview)
This changes the behavior of the
no-extra-label
autofixer. Previously, the autofixer would behave like this:However, it now behaves like this:
In other words, it now only fixes the break/continue statement that got reported, but doesn't touch the loop. In my opinion, this is a better fix, because the
no-extra-label
rule is only concerned about extrabreak
/continue
labels, not unused labels on loops. (Theno-unused-labels
rule can be used to enforce no missing loop labels, and it will be able to do this automatically when/if #7841 is merged.)Is there anything you'd like reviewers to focus on?
It would be good to verify that this change is a good idea. My only concern is that there was some opposition to adding a fixer for
no-unused-labels
in #7841, so if that PR stalls or is rejected, people might have more unused labels in their code after autofixing.