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: Add "multiline" type to padding-line-between-statements #8668

Conversation

Lobstrosity
Copy link
Contributor

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

[ ] Documentation update
[ ] Bug fix (template)
[ ] New rule (template)
[X] 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)

Adds multiline-expression statement type to existing padding-line-between-statements rule.

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

n/a

What rule do you want to change?

padding-line-between-statements

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

More (or at least never fewer)

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

Adds multiline-expression property to existing StatementTypes object (basically a copy/paste of the existing expression property and a copy/paste of the line numbers check from existing multiline-block-like property).

Please provide some example code that this change will affect:

Given the following rule:

"padding-line-between-statements": [
  "error",
  { "blankLine": "always", "prev": "*", "next": "multiline-expression" }
]

The following code (single-line expression without padding line) is correct:

const promise = fetch();
promise.then(console.dir);

The following code (multi-line expression with padding line) is correct:

const promise = fetch();

promise.then(data => {
  console.dir(data);
});

The following code (multi-line expression without padding line) is incorrect:

const promise = fetch();
promise.then(data => {
  console.dir(data);
});

What does the rule currently do for this code?

Currently, no warnings/errors emitted for any of the samples above.

What will the rule do after it's changed?

No warnings/errors will be produced for the correct samples. An error will be produced for the incorrect sample.

@eslintbot
Copy link

LGTM

@platinumazure platinumazure 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 labels May 30, 2017
@platinumazure
Copy link
Member

Seems reasonable (and useful), 👍 from me.

@kaicataldo
Copy link
Member

@eslint/eslint-team Looks like this just needs a champion to move forward.

@not-an-aardvark
Copy link
Member

Thanks for your interest in improving ESLint. Unfortunately, it looks like this proposal didn't get consensus from the team, so I'm closing it. We define consensus as having three 👍s from team members, as well as a team member willing to champion the proposal. This is a high bar by design -- we can't realistically accept and maintain every feature request in the long term, so we only accept feature requests which are useful enough that there is consensus among the team that they're worth adding.

Since ESLint is pluggable and can load custom rules at runtime, the lack of consensus among the ESLint team doesn't need to be a blocker for you using this in your project, if you'd find it useful. It just means that you would need to implement this as a custom rule yourself, rather than using a bundled rule that is packaged with ESLint.

@aladdin-add
Copy link
Member

since #9491 has been accept, shall we reopen this PR, and marked accepted?

@platinumazure platinumazure reopened this Jan 25, 2018
@jsf-clabot
Copy link

jsf-clabot commented Jan 25, 2018

CLA assistant check
All committers have signed the CLA.

@platinumazure platinumazure 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 Jan 25, 2018
@platinumazure
Copy link
Member

I've reopened this PR, thanks!

@Lobstrosity If you're still willing to work on this, here's what we need:

  • We'll the CLA signed before we can accept this contribution.
  • In addition, please make sure that this PR addresses the proposal we accepted in Multiline expressions in padding-line-between-statements rule #9491, or at least has only minor differences. (I haven't checked yet, I'm not saying this PR definitely doesn't match the proposal.)

Thanks for your patience as we worked through our process!

@Lobstrosity
Copy link
Contributor Author

@platinumazure: Thank you for re-evaluating.

I have signed the CLA.

And I have added test cases to confirm that with this rule:

{ blankLine: "always", prev: "multiline-expression", next: "return" }

The following are correct:

() => {
  someArray.forEach(x => doSomething(x));
  return theThing;
}
() => {
  someArray.forEach(
    x => doSomething(x)
  );

  return theThing;
}

But this is incorrect:

() => {
  someArray.forEach(
    x => doSomething(x)
  );
  return theThing;
}

Copy link
Member

@platinumazure platinumazure 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! (It'd be nice to make the test cases span multiple lines using template strings, but that could be done in a future PR.)

@platinumazure
Copy link
Member

@Lobstrosity Thanks, awesome work! I apologize for letting this sit so long. Not sure we can get this into today's release (at least, I'd like one more reviewer before merging); but if we miss today's, it should definitely get in next release. Thanks for contributing!

@platinumazure platinumazure changed the title Update: Add multiline expression statement type Update: Add "multiline" statement type to padding-line-between-statements Feb 3, 2018
@platinumazure platinumazure changed the title Update: Add "multiline" statement type to padding-line-between-statements Update: Add "multiline" type to padding-line-between-statements Feb 3, 2018
@platinumazure
Copy link
Member

Thanks for contributing, @Lobstrosity! And I'm glad we could finally get this in-- thanks for your patience!

@platinumazure platinumazure merged commit 1da1ada into eslint:master Feb 3, 2018
@Lobstrosity Lobstrosity deleted the add-multiline-expression-statement-type branch February 3, 2018 03:12
This was referenced Mar 16, 2018
@eslint-deprecated eslint-deprecated bot locked and limited conversation to collaborators Aug 3, 2018
@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 3, 2018
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 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

7 participants