Skip to content

Commit 08fa538

Browse files
mysticateanzakas
authored andcommitted
Update: fix false negative of arrow-spacing (fixes #7079) (#7080)
1 parent cec65e3 commit 08fa538

File tree

2 files changed

+34
-8
lines changed

2 files changed

+34
-8
lines changed

lib/rules/arrow-spacing.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,18 @@ module.exports = {
5151
* @returns {Object} Tokens of arrow and before/after arrow.
5252
*/
5353
function getTokens(node) {
54-
let t = sourceCode.getFirstToken(node);
55-
let before;
54+
let arrow = sourceCode.getTokenBefore(node.body);
5655

57-
while (t.type !== "Punctuator" || t.value !== "=>") {
58-
before = t;
59-
t = sourceCode.getTokenAfter(t);
56+
// skip '(' tokens.
57+
while (arrow.value !== "=>") {
58+
arrow = sourceCode.getTokenBefore(arrow);
6059
}
61-
const after = sourceCode.getTokenAfter(t);
6260

63-
return { before, arrow: t, after };
61+
return {
62+
before: sourceCode.getTokenBefore(arrow),
63+
arrow,
64+
after: sourceCode.getTokenAfter(arrow)
65+
};
6466
}
6567

6668
/**

tests/lib/rules/arrow-spacing.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,31 @@ const invalid = [
328328
errors: [
329329
{ column: 1, line: 2, type: "Punctuator" }
330330
]
331-
}
331+
},
332+
333+
// https://github.com/eslint/eslint/issues/7079
334+
{
335+
code: "(a = ()=>0)=>1",
336+
output: "(a = () => 0) => 1",
337+
parserOptions: { ecmaVersion: 6 },
338+
errors: [
339+
{ column: 7, line: 1, message: "Missing space before =>." },
340+
{ column: 10, line: 1, message: "Missing space after =>." },
341+
{ column: 11, line: 1, message: "Missing space before =>." },
342+
{ column: 14, line: 1, message: "Missing space after =>." },
343+
],
344+
},
345+
{
346+
code: "(a = ()=>0)=>(1)",
347+
output: "(a = () => 0) => (1)",
348+
parserOptions: { ecmaVersion: 6 },
349+
errors: [
350+
{ column: 7, line: 1, message: "Missing space before =>." },
351+
{ column: 10, line: 1, message: "Missing space after =>." },
352+
{ column: 11, line: 1, message: "Missing space before =>." },
353+
{ column: 14, line: 1, message: "Missing space after =>." },
354+
],
355+
},
332356
];
333357

334358
ruleTester.run("arrow-spacing", rule, {

0 commit comments

Comments
 (0)