From a96b05f6c5649cfee112d605c91d95aa191e2f78 Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Sun, 18 Jul 2021 03:04:43 +0530 Subject: [PATCH] Update: add end location to report in `consistent-return` (refs #12334) (#14798) * Update: add end location to report in `consistent-return` * Update: report end location for `function` keyword --- lib/rules/consistent-return.js | 6 +- tests/lib/rules/consistent-return.js | 112 ++++++++++++++++++++++----- 2 files changed, 94 insertions(+), 24 deletions(-) diff --git a/lib/rules/consistent-return.js b/lib/rules/consistent-return.js index a250430cb76..0e20209af56 100644 --- a/lib/rules/consistent-return.js +++ b/lib/rules/consistent-return.js @@ -104,18 +104,18 @@ module.exports = { } else if (node.type === "ArrowFunctionExpression") { // `=>` token - loc = context.getSourceCode().getTokenBefore(node.body, astUtils.isArrowToken).loc.start; + loc = context.getSourceCode().getTokenBefore(node.body, astUtils.isArrowToken).loc; } else if ( node.parent.type === "MethodDefinition" || (node.parent.type === "Property" && node.parent.method) ) { // Method name. - loc = node.parent.key.loc.start; + loc = node.parent.key.loc; } else { // Function name or `function` keyword. - loc = (node.id || node).loc.start; + loc = (node.id || context.getSourceCode().getFirstToken(node)).loc; } if (!name) { diff --git a/tests/lib/rules/consistent-return.js b/tests/lib/rules/consistent-return.js index 53781ea423d..16a1ed97a19 100644 --- a/tests/lib/rules/consistent-return.js +++ b/tests/lib/rules/consistent-return.js @@ -52,7 +52,11 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturnValue", data: { name: "Function 'foo'" }, - type: "ReturnStatement" + type: "ReturnStatement", + line: 1, + column: 46, + endLine: 1, + endColumn: 53 } ] }, @@ -63,7 +67,11 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturnValue", data: { name: "Arrow function" }, - type: "ReturnStatement" + type: "ReturnStatement", + line: 1, + column: 47, + endLine: 1, + endColumn: 54 } ] }, @@ -73,7 +81,11 @@ ruleTester.run("consistent-return", rule, { { messageId: "unexpectedReturnValue", data: { name: "Function 'foo'" }, - type: "ReturnStatement" + type: "ReturnStatement", + line: 1, + column: 41, + endLine: 1, + endColumn: 54 } ] }, @@ -83,7 +95,11 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturnValue", data: { name: "Function" }, - type: "ReturnStatement" + type: "ReturnStatement", + line: 1, + column: 44, + endLine: 1, + endColumn: 51 } ] }, @@ -93,7 +109,11 @@ ruleTester.run("consistent-return", rule, { { messageId: "unexpectedReturnValue", data: { name: "Function" }, - type: "ReturnStatement" + type: "ReturnStatement", + line: 1, + column: 39, + endLine: 1, + endColumn: 52 } ] }, @@ -104,7 +124,11 @@ ruleTester.run("consistent-return", rule, { { messageId: "unexpectedReturnValue", data: { name: "Arrow function" }, - type: "ReturnStatement" + type: "ReturnStatement", + line: 1, + column: 33, + endLine: 1, + endColumn: 46 } ] }, @@ -116,7 +140,10 @@ ruleTester.run("consistent-return", rule, { messageId: "missingReturnValue", data: { name: "Function 'foo'" }, type: "ReturnStatement", - column: 41 + line: 1, + column: 41, + endLine: 1, + endColumn: 58 } ] }, @@ -128,7 +155,10 @@ ruleTester.run("consistent-return", rule, { messageId: "missingReturnValue", data: { name: "Function 'foo'" }, type: "ReturnStatement", - column: 41 + line: 1, + column: 41, + endLine: 1, + endColumn: 55 } ] }, @@ -140,7 +170,10 @@ ruleTester.run("consistent-return", rule, { messageId: "unexpectedReturnValue", data: { name: "Function 'foo'" }, type: "ReturnStatement", - column: 46 + line: 1, + column: 46, + endLine: 1, + endColumn: 58 } ] }, @@ -152,7 +185,10 @@ ruleTester.run("consistent-return", rule, { messageId: "unexpectedReturnValue", data: { name: "Function 'foo'" }, type: "ReturnStatement", - column: 43 + line: 1, + column: 43, + endLine: 1, + endColumn: 55 } ] }, @@ -163,7 +199,11 @@ ruleTester.run("consistent-return", rule, { { messageId: "missingReturnValue", data: { name: "Program" }, - type: "ReturnStatement" + type: "ReturnStatement", + line: 1, + column: 25, + endLine: 1, + endColumn: 32 } ] }, @@ -174,7 +214,10 @@ ruleTester.run("consistent-return", rule, { messageId: "missingReturn", data: { name: "function 'foo'" }, type: "FunctionDeclaration", - column: 10 + line: 1, + column: 10, + endLine: 1, + endColumn: 13 } ] }, @@ -185,7 +228,10 @@ ruleTester.run("consistent-return", rule, { messageId: "missingReturn", data: { name: "function '_foo'" }, type: "FunctionDeclaration", - column: 10 + line: 1, + column: 10, + endLine: 1, + endColumn: 14 } ] }, @@ -196,7 +242,10 @@ ruleTester.run("consistent-return", rule, { messageId: "missingReturn", data: { name: "function 'foo'" }, type: "FunctionExpression", - column: 12 + line: 1, + column: 12, + endLine: 1, + endColumn: 15 } ] }, @@ -207,7 +256,10 @@ ruleTester.run("consistent-return", rule, { messageId: "missingReturn", data: { name: "function" }, type: "FunctionExpression", - column: 3 + line: 1, + column: 3, + endLine: 1, + endColumn: 11 } ] }, @@ -219,7 +271,10 @@ ruleTester.run("consistent-return", rule, { messageId: "missingReturn", data: { name: "arrow function" }, type: "ArrowFunctionExpression", - column: 6 + line: 1, + column: 6, + endLine: 1, + endColumn: 8 } ] }, @@ -231,7 +286,10 @@ ruleTester.run("consistent-return", rule, { messageId: "missingReturn", data: { name: "method 'foo'" }, type: "FunctionExpression", - column: 12 + line: 1, + column: 12, + endLine: 1, + endColumn: 15 } ] }, @@ -243,7 +301,10 @@ ruleTester.run("consistent-return", rule, { messageId: "missingReturn", data: { name: "method 'foo'" }, type: "FunctionExpression", - column: 10 + line: 1, + column: 10, + endLine: 1, + endColumn: 13 } ] }, @@ -255,7 +316,10 @@ ruleTester.run("consistent-return", rule, { messageId: "missingReturn", data: { name: "program" }, type: "Program", - column: 1 + line: 1, + column: 1, + endLine: void 0, + endColumn: void 0 } ] }, @@ -267,7 +331,10 @@ ruleTester.run("consistent-return", rule, { messageId: "missingReturn", data: { name: "method 'CapitalizedFunction'" }, type: "FunctionExpression", - column: 11 + line: 1, + column: 11, + endLine: 1, + endColumn: 30 } ] }, @@ -279,7 +346,10 @@ ruleTester.run("consistent-return", rule, { messageId: "missingReturn", data: { name: "method 'constructor'" }, type: "FunctionExpression", - column: 4 + line: 1, + column: 4, + endLine: 1, + endColumn: 15 } ] }