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-useless-computed-key invalid autofix for getters and setters #8335
Fix: no-useless-computed-key invalid autofix for getters and setters #8335
Conversation
@not-an-aardvark, thanks for your PR! By analyzing the history of the files in this pull request, we identified @BYK, @mysticatea and @kaicataldo to be potential reviewers. |
LGTM |
Previously, the no-useless-computed-key autofixer could sometimes place a key next to `get`, `set`, or `async` identifier in a property, causing the identifier and the key to combine and become a new identifier. This commit updates the autofixer to insert a space whenever that would happen to prevent the identifiers from combining.
e30d1b2
to
c79463a
Compare
LGTM |
// Insert a space before the key to avoid changing identifiers, e.g. ({ get[2]() {} }) to ({ get2() {} }) | ||
const needsSpaceBeforeKey = tokenBeforeLeftBracket.range[1] === leftSquareBracket.range[0] && | ||
esUtils.code.isIdentifierPartES6(tokenBeforeLeftBracket.value.slice(-1).charCodeAt(0)) && | ||
esUtils.code.isIdentifierPartES6(key.raw.charCodeAt(0)); |
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.
I think this logic might need to be extracted to ast-utils or similar (I've seen this in two PRs today).
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.
That's probably a good idea. I'll make a separate PR for it though.
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:
What did you do? Please include the actual source code causing the issue.
What did you expect to happen?
I expected the code to be autofixed to
What actually happened? Please include the actual, raw output from ESLint.
The code was autofixed to
What changes did you make? (Give an overview)
Previously, the no-useless-computed-key autofixer could sometimes place a key next to
get
,set
, orasync
identifier in a property, causing the identifier and the key to combine and become a new identifier. This commit updates the autofixer to insert a space whenever that would happen to prevent the identifiers from combining.Is there anything you'd like reviewers to focus on?
Nothing in particular