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

Fix: curly removes necessary braces between if and else (fixes #12928) #12943

Merged
merged 1 commit into from Feb 28, 2020

Conversation

mdjermanovic
Copy link
Member

Prerequisites checklist

  • I have read the contributing guidelines.
  • The team has reached consensus on the changes proposed in this pull request. If not, I understand that the evaluation process will begin with this pull request and won't be merged until the team has reached consensus.

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

[X] Bug fix

Fixes #12928

What changes did you make? (Give an overview)

Implemented a more generic check than the existing requiresBraceOfConsequent, to account for more cases when an if can become associated with an unrelated else.

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

In the following case, the rule will still report 2 errors although only 1 pair of braces can be removed:

/* eslint curly: ["error", "multi"] */

if (a) {
    while (b) { 
        if (c) foo(); 
    }  
} else 
    bar();

Auto-fix will remove the outer braces only. After that, the inner braces will become valid.

User can manually remove either of these. After that, the error for the other braces will disappear.

@mdjermanovic mdjermanovic added bug ESLint is working incorrectly rule Relates to ESLint's core rules accepted There is consensus among the team that this change meets the criteria for inclusion labels Feb 20, 2020
Copy link
Member

@nzakas nzakas 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 for the awesome function comments explaining what they do.

@kaicataldo kaicataldo merged commit afde78b into master Feb 28, 2020
@kaicataldo kaicataldo deleted the issue12928 branch February 28, 2020 20:47
@mdjermanovic mdjermanovic mentioned this pull request May 10, 2020
@eslint-deprecated eslint-deprecated bot locked and limited conversation to collaborators Aug 28, 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 Aug 28, 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 rule Relates to ESLint's core rules
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Rule "curly" with "multi" has false positive on nested if-for-if, fixer changes code behavior
3 participants