Skip to content
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

Update: Check member expressions with this in operator-assignment #12495

Merged
merged 1 commit into from Nov 22, 2019

Conversation

mdjermanovic
Copy link
Member

What is the purpose of this pull request? (put an "X" next to item)

[X] Bug fix
[X] Changes an existing rule

I believe this is a bug fix, but it produces more warnings.

This PR fixes two things in the operator-assignment rule:

  • The default always option was ignoring this member expressions, such as this.x = this.x + y.
  • The never option was reporting this member expressions, but didn't auto-fix in some cases where it seems to be safe, such as this.x += y.

What rule do you want to change?

operator-assignment

Does this change cause the rule to produce more or fewer warnings?

more

How will the change be implemented? (New option, new default behavior, etc.)?

new default behavior

Please provide some example code that this change will affect:

/* eslint operator-assignment: ["error", "always"] */

this.foo = this.foo + bar

What does the rule currently do for this code?

No errors

What will the rule do after it's changed?

Error and autofix to:

/* eslint operator-assignment: ["error", "always"] */

this.foo += bar

What changes did you make? (Give an overview)

Account for ThisExpression in the function that compares two expressions. Also in the function that determines whether the autofix is safe.

Is there anything you'd like reviewers to focus on?

All added tests in valid were valid before, those are just regression tests.

The following tests with the never option had the same behavior (which is an error without autofix) before this PR, and that isn't changed.

this.foo.bar += baz
this[foo] >>>= bar

The following test with the never option was already an error, but wasn't being auto-fixed. That's changed now.

this.foo += bar

The following tests with the default always options are new warnings:

this.foo = this.foo + bar
this.foo.bar = this.foo.bar + baz
this[foo] = this[foo] + bar
this[5] = this[5] / foo

Can this be treated as a semver-minor bug fix that produces more warnings? There was a similar case in #12279.

@eslint-deprecated eslint-deprecated bot added the triage An ESLint team member will look at this issue soon label Oct 27, 2019
@mdjermanovic mdjermanovic added bug ESLint is working incorrectly enhancement This change enhances an existing feature of ESLint evaluating The team will evaluate this issue to decide whether it meets the criteria for inclusion rule Relates to ESLint's core rules and removed triage An ESLint team member will look at this issue soon labels Oct 27, 2019
@kaicataldo kaicataldo added accepted There is consensus among the team that this change meets the criteria for inclusion and removed evaluating The team will evaluate this issue to decide whether it meets the criteria for inclusion labels Nov 1, 2019
Copy link
Member

@kaicataldo kaicataldo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

Copy link
Member

@btmills btmills left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks @mdjermanovic! Agree this is a semver-minor bugfix.

@btmills btmills merged commit 0f01f3d into master Nov 22, 2019
@btmills btmills deleted the operatorassignment-this branch November 22, 2019 17:26
@eslint-deprecated eslint-deprecated bot locked and limited conversation to collaborators May 22, 2020
@eslint-deprecated eslint-deprecated bot added the archived due to age This issue has been archived; please open a new issue for any further discussion label May 22, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
accepted There is consensus among the team that this change meets the criteria for inclusion archived due to age This issue has been archived; please open a new issue for any further discussion bug ESLint is working incorrectly enhancement This change enhances an existing feature of ESLint rule Relates to ESLint's core rules
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants