From af4472fed794b86e63730702e4b27294a4118d09 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Mon, 6 Apr 2020 23:16:22 +0200 Subject: [PATCH] Update: Improve report location for new-cap (refs #12334) (#13136) --- lib/rules/new-cap.js | 2 +- tests/lib/rules/new-cap.js | 170 ++++++++++++++++++++++++++++++++++--- 2 files changed, 157 insertions(+), 15 deletions(-) diff --git a/lib/rules/new-cap.js b/lib/rules/new-cap.js index 7cce968c5ae..0faf45efb92 100644 --- a/lib/rules/new-cap.js +++ b/lib/rules/new-cap.js @@ -235,7 +235,7 @@ module.exports = { callee = callee.property; } - context.report({ node, loc: callee.loc.start, messageId }); + context.report({ node, loc: callee.loc, messageId }); } //-------------------------------------------------------------------------- diff --git a/tests/lib/rules/new-cap.js b/tests/lib/rules/new-cap.js index 706bca1983c..ec85c4bf6fd 100644 --- a/tests/lib/rules/new-cap.js +++ b/tests/lib/rules/new-cap.js @@ -74,15 +74,105 @@ ruleTester.run("new-cap", rule, { { code: "var x = foo.Bar(42);", options: [{ capIsNew: false, properties: false }] } ], invalid: [ - { code: "var x = new c();", errors: [{ messageId: "lower", type: "NewExpression" }] }, - { code: "var x = new φ;", errors: [{ messageId: "lower", type: "NewExpression" }] }, - { code: "var x = new a.b.c;", errors: [{ messageId: "lower", type: "NewExpression" }] }, - { code: "var x = new a.b['c'];", errors: [{ messageId: "lower", type: "NewExpression" }] }, - { code: "var b = Foo();", errors: [{ messageId: "upper", type: "CallExpression" }] }, - { code: "var b = a.Foo();", errors: [{ messageId: "upper", type: "CallExpression" }] }, - { code: "var b = a['Foo']();", errors: [{ messageId: "upper", type: "CallExpression" }] }, - { code: "var b = a.Date.UTC();", errors: [{ messageId: "upper", type: "CallExpression" }] }, - { code: "var b = UTC();", errors: [{ messageId: "upper", type: "CallExpression" }] }, + { + code: "var x = new c();", + errors: [{ + messageId: "lower", + type: "NewExpression", + line: 1, + column: 13, + endLine: 1, + endColumn: 14 + }] + }, + { + code: "var x = new φ;", + errors: [{ + messageId: "lower", + type: "NewExpression", + line: 1, + column: 13, + endLine: 1, + endColumn: 14 + }] + }, + { + code: "var x = new a.b.c;", + errors: [{ + messageId: "lower", + type: "NewExpression", + line: 1, + column: 17, + endLine: 1, + endColumn: 18 + }] + }, + { + code: "var x = new a.b['c'];", + errors: [{ + messageId: "lower", + type: "NewExpression", + line: 1, + column: 17, + endLine: 1, + endColumn: 20 + }] + }, + { + code: "var b = Foo();", + errors: [{ + messageId: "upper", + type: "CallExpression", + line: 1, + column: 9, + endLine: 1, + endColumn: 12 + }] + }, + { + code: "var b = a.Foo();", + errors: [{ + messageId: "upper", + type: "CallExpression", + line: 1, + column: 11, + endLine: 1, + endColumn: 14 + }] + }, + { + code: "var b = a['Foo']();", + errors: [{ + messageId: "upper", + type: "CallExpression", + line: 1, + column: 11, + endLine: 1, + endColumn: 16 + }] + }, + { + code: "var b = a.Date.UTC();", + errors: [{ + messageId: "upper", + type: "CallExpression", + line: 1, + column: 16, + endLine: 1, + endColumn: 19 + }] + }, + { + code: "var b = UTC();", + errors: [{ + messageId: "upper", + type: "CallExpression", + line: 1, + column: 9, + endLine: 1, + endColumn: 12 + }] + }, { code: "var a = B.C();", errors: [ @@ -90,7 +180,9 @@ ruleTester.run("new-cap", rule, { messageId: "upper", type: "CallExpression", line: 1, - column: 11 + column: 11, + endLine: 1, + endColumn: 12 } ] }, @@ -101,7 +193,9 @@ ruleTester.run("new-cap", rule, { messageId: "upper", type: "CallExpression", line: 2, - column: 2 + column: 2, + endLine: 2, + endColumn: 3 } ] }, @@ -112,7 +206,9 @@ ruleTester.run("new-cap", rule, { messageId: "lower", type: "NewExpression", line: 1, - column: 15 + column: 15, + endLine: 1, + endColumn: 16 } ] }, @@ -123,7 +219,9 @@ ruleTester.run("new-cap", rule, { messageId: "lower", type: "NewExpression", line: 2, - column: 1 + column: 1, + endLine: 2, + endColumn: 2 } ] }, @@ -134,7 +232,51 @@ ruleTester.run("new-cap", rule, { messageId: "lower", type: "NewExpression", line: 1, - column: 13 + column: 13, + endLine: 1, + endColumn: 14 + } + ] + }, + { + code: "var a = new b[ ( 'foo' ) ]();", + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: "lower", + type: "NewExpression", + line: 1, + column: 18, + endLine: 1, + endColumn: 23 + } + ] + }, + { + code: "var a = new b[`foo`];", + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: "lower", + type: "NewExpression", + line: 1, + column: 15, + endLine: 1, + endColumn: 20 + } + ] + }, + { + code: "var a = b[`\\\nFoo`]();", + parserOptions: { ecmaVersion: 6 }, + errors: [ + { + messageId: "upper", + type: "CallExpression", + line: 1, + column: 11, + endLine: 2, + endColumn: 5 } ] },