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

Add suggestions for no-unsafe-negation #12591

Closed
mdjermanovic opened this issue Nov 22, 2019 · 1 comment · May be fixed by nl253/BlogUI#3, O330oei/node#4, O330oei/node#11 or armonkahil/TriviaGame#2
Closed

Add suggestions for no-unsafe-negation #12591

mdjermanovic opened this issue Nov 22, 2019 · 1 comment · May be fixed by nl253/BlogUI#3, O330oei/node#4, O330oei/node#11 or armonkahil/TriviaGame#2
Assignees

Comments

@mdjermanovic
Copy link
Member

@mdjermanovic mdjermanovic commented Nov 22, 2019

It might be useful to have some Suggestions in the core rules, as a working example for rule plugins and a ready test for editor integrations? This rule looks to me like a place where suggestions make sense and should be simple enough to implement for the start.

What rule do you want to change?

no-unsafe-negation

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

same

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 no-unsafe-negation: "error"*/

if (!key in object) {
    // ...
}

What does the rule currently do for this code?

Just an error without the autofix. The fixer was recently removed in #12157 because it was changing behavior.

What will the rule do after it's changed?

An error with two suggestions.

The first suggestion would be to negate the whole relational expression. This changes behavior, but probably from a bug to the intended one (that's how the removed fixer was working):

/*eslint no-unsafe-negation: "error"*/

if (!(key in object)) {
    // ...
}

The second suggestion would be to make the existing intended behavior explicit, by wrapping the negation in parentheses, which is a documented exception allowed by this rule and does not produce an error after the fix:

/*eslint no-unsafe-negation: "error"*/

if ((!key) in object) {
    // ...
}

Does this make sense?

Are you willing to submit a pull request to implement this change?

Yes.

@platinumazure

This comment has been minimized.

Copy link
Member

@platinumazure platinumazure commented Nov 23, 2019

Yes! This is a great example/test case for the Suggestions feature. Let's do this!

@ilyavolodin ilyavolodin added accepted and removed evaluating labels Nov 23, 2019
mdjermanovic added a commit that referenced this issue Nov 27, 2019
@btmills btmills closed this in 05f7dd5 Dec 20, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.