Skip to content

Commit

Permalink
Fix: recognize all line terminators in func-call-spacing (fixes #7923) (
Browse files Browse the repository at this point in the history
  • Loading branch information
fasttime authored and btmills committed Jan 20, 2017
1 parent a664e8a commit ca01e00
Show file tree
Hide file tree
Showing 2 changed files with 114 additions and 3 deletions.
6 changes: 3 additions & 3 deletions lib/rules/func-call-spacing.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,9 @@ module.exports = {
return;
}

const hasWhitespace = sourceCode.isSpaceBetweenTokens(prevToken, parenToken);
const hasNewline = hasWhitespace &&
/\n/.test(text.slice(prevToken.range[1], parenToken.range[0]).replace(/\/\*.*?\*\//g, ""));
const textBetweenTokens = text.slice(prevToken.range[1], parenToken.range[0]).replace(/\/\*.*?\*\//g, "");
const hasWhitespace = /\s/.test(textBetweenTokens);
const hasNewline = hasWhitespace && /[\n\r\u2028\u2029]/.test(textBetweenTokens);

/*
* never allowNewlines hasWhitespace hasNewline message
Expand Down
111 changes: 111 additions & 0 deletions tests/lib/rules/func-call-spacing.js
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,22 @@ ruleTester.run("func-call-spacing", rule, {
{
code: "f\n/*\n*/\n()",
options: ["always", { allowNewlines: true }]
},
{
code: "f\r();",
options: ["always", { allowNewlines: true }]
},
{
code: "f\u2028();",
options: ["always", { allowNewlines: true }]
},
{
code: "f\u2029();",
options: ["always", { allowNewlines: true }]
},
{
code: "f\r\n();",
options: ["always", { allowNewlines: true }]
}
],
invalid: [
Expand Down Expand Up @@ -251,6 +267,33 @@ ruleTester.run("func-call-spacing", rule, {
output: "f();\n t();"
},

// https://github.com/eslint/eslint/issues/7787
{
code: "f\n();",
errors: [{ message: "Unexpected space between function name and paren.", type: "CallExpression" }],
output: "f\n();" // no change
},
{
code: "f\r();",
errors: [{ message: "Unexpected space between function name and paren.", type: "CallExpression" }],
output: "f\r();" // no change
},
{
code: "f\u2028();",
errors: [{ message: "Unexpected space between function name and paren.", type: "CallExpression" }],
output: "f\u2028();" // no change
},
{
code: "f\u2029();",
errors: [{ message: "Unexpected space between function name and paren.", type: "CallExpression" }],
output: "f\u2029();" // no change
},
{
code: "f\r\n();",
errors: [{ message: "Unexpected space between function name and paren.", type: "CallExpression" }],
output: "f\r\n();" // no change
},

// "never"
{
code: "f ();",
Expand Down Expand Up @@ -393,6 +436,50 @@ ruleTester.run("func-call-spacing", rule, {
"(0, baz())"
].join("\n") // no change
},
{
code: "f\r();",
options: ["never"],
errors: [
{
message: "Unexpected space between function name and paren.",
type: "CallExpression"
}
],
output: "f\r();" // no change
},
{
code: "f\u2028();",
options: ["never"],
errors: [
{
message: "Unexpected space between function name and paren.",
type: "CallExpression"
}
],
output: "f\u2028();" // no change
},
{
code: "f\u2029();",
options: ["never"],
errors: [
{
message: "Unexpected space between function name and paren.",
type: "CallExpression"
}
],
output: "f\u2029();" // no change
},
{
code: "f\r\n();",
options: ["never"],
errors: [
{
message: "Unexpected space between function name and paren.",
type: "CallExpression"
}
],
output: "f\r\n();" // no change
},

// "always"
{
Expand Down Expand Up @@ -503,6 +590,30 @@ ruleTester.run("func-call-spacing", rule, {
],
output: "f ();\n t ();"
},
{
code: "f\r();",
options: ["always"],
errors: [{ message: "Unexpected newline between function name and paren.", type: "CallExpression" }],
output: "f ();"
},
{
code: "f\u2028();",
options: ["always"],
errors: [{ message: "Unexpected newline between function name and paren.", type: "CallExpression" }],
output: "f ();"
},
{
code: "f\u2029();",
options: ["always"],
errors: [{ message: "Unexpected newline between function name and paren.", type: "CallExpression" }],
output: "f ();"
},
{
code: "f\r\n();",
options: ["always"],
errors: [{ message: "Unexpected newline between function name and paren.", type: "CallExpression" }],
output: "f ();"
},

// "always", "allowNewlines": true
{
Expand Down

0 comments on commit ca01e00

Please sign in to comment.