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 template literal in yoda (fixes #12863) #12876

Merged
merged 6 commits into from Feb 9, 2020
Merged

Conversation

yeonjuan
Copy link
Member

@yeonjuan yeonjuan commented Feb 5, 2020

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)

[ ] Documentation update
[x] Bug fix (template)
[ ] New rule (template)
[ ] Changes an existing rule (template)
[ ] Add autofixing to a rule
[ ] Add a CLI option
[ ] Add something to the core
[ ] Other, please explain:

What changes did you make? (Give an overview)

I added checking for template literals, which have no expressions.

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

In the actual version(v6.8.0), a comparison between a literal and expression is warned, even if operands in the expressions are consist of literals only.

Online Demo

/*eslint yoda: ["error", "never"]*/

if (1 < 1 + 1) { // Error
}

if ("a" === "a" + "b") { // Error
}

if (1 < +1) {

}

From this point of view, I think template literal with only literal expressions should be warned, so added these test cases.

{
        code: "if (`${\"red\"}` <= `red`) {}",
        output: "if (`red` >= `${\"red\"}`) {}",
        options: ["always"],
        parserOptions: { ecmaVersion: 2015 },
        errors: [
            {
                messageId: "expected",
                data: { expectedSide: "left", operator: "<=" },
                type: "BinaryExpression"
            }
        ]
}

But I'm not sure whether it is intended behavior or not.

@eslint-deprecated eslint-deprecated bot added the triage An ESLint team member will look at this issue soon label Feb 5, 2020
@yeonjuan yeonjuan added 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 bug ESLint is working incorrectly and removed triage An ESLint team member will look at this issue soon labels Feb 5, 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.

The code looks good. Can you please update the documentation too?

@mdjermanovic mdjermanovic 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 Feb 5, 2020
Copy link
Member

@mdjermanovic mdjermanovic left a comment

Choose a reason for hiding this comment

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

Looks good! I left a couple of minor suggestions.

lib/rules/yoda.js Show resolved Hide resolved
lib/rules/yoda.js Show resolved Hide resolved
tests/lib/rules/yoda.js Show resolved Hide resolved
Copy link
Member

@mdjermanovic mdjermanovic 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!

@kaicataldo kaicataldo merged commit 1ee6b63 into master Feb 9, 2020
@kaicataldo kaicataldo deleted the issue12863 branch February 9, 2020 20:23
@kaicataldo
Copy link
Member

Thanks for contributing!

montmanu pushed a commit to montmanu/eslint that referenced this pull request Mar 4, 2020
…2876)

* Fix: check template literal in yoda (fixes eslint#12863)

* fix JSDOC, typo, add test cases

* add test cases

* update the documentation

* Edit jsdoc

* Add test case
@eslint-deprecated eslint-deprecated bot locked and limited conversation to collaborators Aug 9, 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 9, 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

4 participants