Skip to content

Commit a784dac

Browse files
authoredApr 4, 2020
Update: Improve report location newline-per-chained-call (refs #12334) (#13116)
* Update: Improve report location newline-per-chained-call (refs #12334) * Set loc.end to callee.loc.end
1 parent 5e07574 commit a784dac

File tree

2 files changed

+174
-23
lines changed

2 files changed

+174
-23
lines changed
 

‎lib/rules/newline-per-chained-call.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -90,16 +90,19 @@ module.exports = {
9090
}
9191

9292
if (depth > ignoreChainWithDepth && astUtils.isTokenOnSameLine(callee.object, callee.property)) {
93+
const firstTokenAfterObject = sourceCode.getTokenAfter(callee.object, astUtils.isNotClosingParenToken);
94+
9395
context.report({
9496
node: callee.property,
95-
loc: callee.property.loc.start,
97+
loc: {
98+
start: firstTokenAfterObject.loc.start,
99+
end: callee.loc.end
100+
},
96101
messageId: "expected",
97102
data: {
98103
callee: getPropertyText(callee)
99104
},
100105
fix(fixer) {
101-
const firstTokenAfterObject = sourceCode.getTokenAfter(callee.object, astUtils.isNotClosingParenToken);
102-
103106
return fixer.insertTextBefore(firstTokenAfterObject, "\n");
104107
}
105108
});

‎tests/lib/rules/newline-per-chained-call.js

+168-20
Original file line numberDiff line numberDiff line change
@@ -30,47 +30,92 @@ ruleTester.run("newline-per-chained-call", rule, {
3030
code: "_\n.chain({}).map(foo).filter(bar).value();",
3131
output: "_\n.chain({}).map(foo)\n.filter(bar)\n.value();",
3232
errors: [{
33-
messageId: "expected", data: { callee: ".filter" }
33+
messageId: "expected",
34+
data: { callee: ".filter" },
35+
line: 2,
36+
column: 20,
37+
endLine: 2,
38+
endColumn: 27
3439
}, {
35-
messageId: "expected", data: { callee: ".value" }
40+
messageId: "expected",
41+
data: { callee: ".value" },
42+
line: 2,
43+
column: 32,
44+
endLine: 2,
45+
endColumn: 38
3646
}]
3747
}, {
3848
code: "_\n.chain({})\n.map(foo)\n.filter(bar).value();",
3949
output: "_\n.chain({})\n.map(foo)\n.filter(bar)\n.value();",
4050
errors: [{
41-
messageId: "expected", data: { callee: ".value" }
51+
messageId: "expected",
52+
data: { callee: ".value" },
53+
line: 4,
54+
column: 13,
55+
endLine: 4,
56+
endColumn: 19
4257
}]
4358
}, {
4459
code: "a().b().c().e.d()",
4560
output: "a().b()\n.c().e.d()",
4661
errors: [{
47-
messageId: "expected", data: { callee: ".c" }
62+
messageId: "expected",
63+
data: { callee: ".c" },
64+
line: 1,
65+
column: 8,
66+
endLine: 1,
67+
endColumn: 10
4868
}]
4969
}, {
5070
code: "a.b.c().e().d()",
5171
output: "a.b.c().e()\n.d()",
5272
errors: [{
53-
messageId: "expected", data: { callee: ".d" }
73+
messageId: "expected",
74+
data: { callee: ".d" },
75+
line: 1,
76+
column: 12,
77+
endLine: 1,
78+
endColumn: 14
5479
}]
5580
}, {
5681
code: "_.chain({}).map(a).value(); ",
5782
output: "_.chain({}).map(a)\n.value(); ",
5883
errors: [{
59-
messageId: "expected", data: { callee: ".value" }
84+
messageId: "expected",
85+
data: { callee: ".value" },
86+
line: 1,
87+
column: 19,
88+
endLine: 1,
89+
endColumn: 25
6090
}]
6191
}, {
6292
code: "var a = m1.m2();\n var b = m1.m2().m3().m4().m5();",
6393
output: "var a = m1.m2();\n var b = m1.m2().m3()\n.m4()\n.m5();",
6494
errors: [{
65-
messageId: "expected", data: { callee: ".m4" }
95+
messageId: "expected",
96+
data: { callee: ".m4" },
97+
line: 2,
98+
column: 22,
99+
endLine: 2,
100+
endColumn: 25
66101
}, {
67-
messageId: "expected", data: { callee: ".m5" }
102+
messageId: "expected",
103+
data: { callee: ".m5" },
104+
line: 2,
105+
column: 27,
106+
endLine: 2,
107+
endColumn: 30
68108
}]
69109
}, {
70110
code: "var a = m1.m2();\n var b = m1.m2().m3()\n.m4().m5();",
71111
output: "var a = m1.m2();\n var b = m1.m2().m3()\n.m4()\n.m5();",
72112
errors: [{
73-
messageId: "expected", data: { callee: ".m5" }
113+
messageId: "expected",
114+
data: { callee: ".m5" },
115+
line: 3,
116+
column: 6,
117+
endLine: 3,
118+
endColumn: 9
74119
}]
75120
}, {
76121
code: "var a = m1().m2\n.m3().m4().m5().m6().m7();",
@@ -79,9 +124,19 @@ ruleTester.run("newline-per-chained-call", rule, {
79124
ignoreChainWithDepth: 3
80125
}],
81126
errors: [{
82-
messageId: "expected", data: { callee: ".m6" }
127+
messageId: "expected",
128+
data: { callee: ".m6" },
129+
line: 2,
130+
column: 16,
131+
endLine: 2,
132+
endColumn: 19
83133
}, {
84-
messageId: "expected", data: { callee: ".m7" }
134+
messageId: "expected",
135+
data: { callee: ".m7" },
136+
line: 2,
137+
column: 21,
138+
endLine: 2,
139+
endColumn: 24
85140
}]
86141
}, {
87142
code: [
@@ -145,9 +200,19 @@ ruleTester.run("newline-per-chained-call", rule, {
145200
".end();"
146201
].join("\n"),
147202
errors: [{
148-
messageId: "expected", data: { callee: ".on" }
203+
messageId: "expected",
204+
data: { callee: ".on" },
205+
line: 16,
206+
column: 3,
207+
endLine: 16,
208+
endColumn: 6
149209
}, {
150-
messageId: "expected", data: { callee: ".end" }
210+
messageId: "expected",
211+
data: { callee: ".end" },
212+
line: 27,
213+
column: 3,
214+
endLine: 27,
215+
endColumn: 7
151216
}]
152217
}, {
153218
code: [
@@ -163,34 +228,117 @@ ruleTester.run("newline-per-chained-call", rule, {
163228
" 'method4']()"
164229
].join("\n"),
165230
errors: [{
166-
messageId: "expected", data: { callee: "['method' + n]" }
231+
messageId: "expected",
232+
data: { callee: "['method' + n]" },
233+
line: 1,
234+
column: 29,
235+
endLine: 1,
236+
endColumn: 43
167237
}, {
168-
messageId: "expected", data: { callee: "[aCondition ?" }
238+
messageId: "expected",
239+
data: { callee: "[aCondition ?" },
240+
line: 1,
241+
column: 45,
242+
endLine: 3,
243+
endColumn: 15
169244
}]
170245
}, {
171246
code: "foo.bar()['foo' + \u2029 + 'bar']()",
172247
output: "foo.bar()\n['foo' + \u2029 + 'bar']()",
173248
options: [{ ignoreChainWithDepth: 1 }],
174-
errors: [{ messageId: "expected", data: { callee: "['foo' + " } }]
249+
errors: [{
250+
messageId: "expected",
251+
data: { callee: "['foo' + " },
252+
line: 1,
253+
column: 10,
254+
endLine: 2,
255+
endColumn: 10
256+
}]
175257
}, {
176258
code: "foo.bar()[(biz)]()",
177259
output: "foo.bar()\n[(biz)]()",
178260
options: [{ ignoreChainWithDepth: 1 }],
179-
errors: [{ messageId: "expected", data: { callee: "[biz]" } }]
261+
errors: [{
262+
messageId: "expected",
263+
data: { callee: "[biz]" },
264+
line: 1,
265+
column: 10,
266+
endLine: 1,
267+
endColumn: 17
268+
}]
180269
}, {
181270
code: "(foo).bar().biz()",
182271
output: "(foo).bar()\n.biz()",
183272
options: [{ ignoreChainWithDepth: 1 }],
184-
errors: [{ messageId: "expected", data: { callee: ".biz" } }]
273+
errors: [{
274+
messageId: "expected",
275+
data: { callee: ".biz" },
276+
line: 1,
277+
column: 12,
278+
endLine: 1,
279+
endColumn: 16
280+
}]
185281
}, {
186282
code: "foo.bar(). /* comment */ biz()",
187283
output: "foo.bar()\n. /* comment */ biz()",
188284
options: [{ ignoreChainWithDepth: 1 }],
189-
errors: [{ messageId: "expected", data: { callee: ".biz" } }]
285+
errors: [{
286+
messageId: "expected",
287+
data: { callee: ".biz" },
288+
line: 1,
289+
column: 10,
290+
endLine: 1,
291+
endColumn: 29
292+
}]
190293
}, {
191294
code: "foo.bar() /* comment */ .biz()",
192295
output: "foo.bar() /* comment */ \n.biz()",
193296
options: [{ ignoreChainWithDepth: 1 }],
194-
errors: [{ messageId: "expected", data: { callee: ".biz" } }]
297+
errors: [{
298+
messageId: "expected",
299+
data: { callee: ".biz" },
300+
line: 1,
301+
column: 25,
302+
endLine: 1,
303+
endColumn: 29
304+
}]
305+
}, {
306+
code: "((foo.bar()) . baz()).quux();",
307+
output: "((foo.bar()) \n. baz())\n.quux();",
308+
options: [{ ignoreChainWithDepth: 1 }],
309+
errors: [{
310+
messageId: "expected",
311+
data: { callee: ".baz" },
312+
line: 1,
313+
column: 14,
314+
endLine: 1,
315+
endColumn: 19
316+
}, {
317+
messageId: "expected",
318+
data: { callee: ".quux" },
319+
line: 1,
320+
column: 22,
321+
endLine: 1,
322+
endColumn: 27
323+
}]
324+
}, {
325+
code: "((foo.bar()) [a + b] ()) [(c + d)]()",
326+
output: "((foo.bar()) \n[a + b] ()) \n[(c + d)]()",
327+
options: [{ ignoreChainWithDepth: 1 }],
328+
errors: [{
329+
messageId: "expected",
330+
data: { callee: "[a + b]" },
331+
line: 1,
332+
column: 14,
333+
endLine: 1,
334+
endColumn: 21
335+
}, {
336+
messageId: "expected",
337+
data: { callee: "[c + d]" },
338+
line: 1,
339+
column: 26,
340+
endLine: 1,
341+
endColumn: 35
342+
}]
195343
}]
196344
});

0 commit comments

Comments
 (0)
Please sign in to comment.