Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
fix: function-paren-newline crash on "new new Foo();" (#15850)
* fix: function-paren-newline: crash on "new new Foo();"

* fix: function-paren-newline: false negative case support
  • Loading branch information
coderaiser committed May 9, 2022
1 parent 2b83376 commit 3f09aab
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
11 changes: 7 additions & 4 deletions lib/rules/function-paren-newline.js
Expand Up @@ -191,10 +191,13 @@ module.exports = {
function getParenTokens(node) {
switch (node.type) {
case "NewExpression":
if (!node.arguments.length && !(
astUtils.isOpeningParenToken(sourceCode.getLastToken(node, { skip: 1 })) &&
astUtils.isClosingParenToken(sourceCode.getLastToken(node))
)) {
if (!node.arguments.length &&
!(
astUtils.isOpeningParenToken(sourceCode.getLastToken(node, { skip: 1 })) &&
astUtils.isClosingParenToken(sourceCode.getLastToken(node)) &&
node.callee.range[1] < node.range[1]
)
) {

// If the NewExpression does not have parens (e.g. `new Foo`), return null.
return null;
Expand Down
13 changes: 13 additions & 0 deletions tests/lib/rules/function-paren-newline.js
Expand Up @@ -30,6 +30,7 @@ const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6 } });
ruleTester.run("function-paren-newline", rule, {

valid: [
"new new Foo();",

// multiline option (default)
"function baz(foo, bar) {}",
Expand Down Expand Up @@ -1174,6 +1175,18 @@ ruleTester.run("function-paren-newline", rule, {
options: ["never"],
errors: [LEFT_UNEXPECTED_ERROR]
},
{
code: `
new new C()(
);
`,
output: `
new new C()();
`,
options: ["never"],
errors: [LEFT_UNEXPECTED_ERROR, RIGHT_UNEXPECTED_ERROR]
},

{
code: `
function baz(
Expand Down

0 comments on commit 3f09aab

Please sign in to comment.