Skip to content

Commit 31ff45c

Browse files
authored
fix: reporting location in no-missing-placeholders (#280)
1 parent f5a5c24 commit 31ff45c

File tree

2 files changed

+43
-16
lines changed

2 files changed

+43
-16
lines changed

Diff for: lib/rules/no-missing-placeholders.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,11 @@ module.exports = {
8080
});
8181
}
8282

83-
for (const { message, data } of reportMessagesAndDataArray.filter(
84-
(obj) => obj.message
85-
)) {
83+
for (const {
84+
message,
85+
messageId,
86+
data,
87+
} of reportMessagesAndDataArray.filter((obj) => obj.message)) {
8688
const messageStaticValue = getStaticValue(
8789
message,
8890
context.getScope()
@@ -112,7 +114,7 @@ module.exports = {
112114

113115
if (!matchingProperty) {
114116
context.report({
115-
node: message,
117+
node: data || messageId || message,
116118
messageId: 'placeholderDoesNotExist',
117119
data: { missingKey: match[1] },
118120
});

Diff for: tests/lib/rules/no-missing-placeholders.js

+37-12
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ const RuleTester = require('eslint').RuleTester;
1717
* @param {string} missingKey The placeholder that is missing
1818
* @returns {object} An expected error
1919
*/
20-
function error(missingKey, type = 'Literal') {
20+
function error(missingKey, type, extra) {
2121
return {
2222
type,
2323
message: `The placeholder {{${missingKey}}} is missing (must provide it in the report's \`data\` object).`,
24+
...extra,
2425
};
2526
}
2627

@@ -235,7 +236,7 @@ ruleTester.run('no-missing-placeholders', rule, {
235236
}
236237
};
237238
`,
238-
errors: [error('bar')],
239+
errors: [error('bar', 'Literal')],
239240
},
240241
{
241242
code: `
@@ -249,7 +250,7 @@ ruleTester.run('no-missing-placeholders', rule, {
249250
}
250251
};
251252
`,
252-
errors: [error('bar')],
253+
errors: [error('bar', 'ObjectExpression')],
253254
},
254255
{
255256
code: `
@@ -263,15 +264,15 @@ ruleTester.run('no-missing-placeholders', rule, {
263264
}
264265
};
265266
`,
266-
errors: [error('hasOwnProperty')],
267+
errors: [error('hasOwnProperty', 'ObjectExpression')],
267268
},
268269
{
269270
code: `
270271
module.exports = context => {
271272
context.report(node, 'foo {{bar}}', { baz: 'qux' }); return {};
272273
};
273274
`,
274-
errors: [error('bar')],
275+
errors: [error('bar', 'ObjectExpression')],
275276
},
276277
{
277278
// Message in variable.
@@ -281,15 +282,15 @@ ruleTester.run('no-missing-placeholders', rule, {
281282
context.report(node, MESSAGE, { baz: 'qux' }); return {};
282283
};
283284
`,
284-
errors: [error('bar', 'Identifier')],
285+
errors: [error('bar', 'ObjectExpression')],
285286
},
286287
{
287288
code: `
288289
module.exports = context => {
289290
context.report(node, { line: 1, column: 3 }, 'foo {{bar}}', { baz: 'baz' }); return {};
290291
};
291292
`,
292-
errors: [error('bar')],
293+
errors: [error('bar', 'ObjectExpression')],
293294
},
294295
{
295296
code: `
@@ -303,7 +304,19 @@ ruleTester.run('no-missing-placeholders', rule, {
303304
}
304305
};
305306
`,
306-
errors: [error('bar')],
307+
errors: [
308+
error(
309+
'bar',
310+
'ObjectExpression',
311+
// report on data
312+
{
313+
line: 7,
314+
endLine: 7,
315+
column: 21,
316+
endColumn: 39,
317+
}
318+
),
319+
],
307320
},
308321

309322
{
@@ -343,7 +356,7 @@ ruleTester.run('no-missing-placeholders', rule, {
343356
}
344357
};
345358
`,
346-
errors: [error('bar')],
359+
errors: [error('bar', 'ObjectExpression')],
347360
},
348361
{
349362
// Suggestion and messageId
@@ -362,7 +375,7 @@ ruleTester.run('no-missing-placeholders', rule, {
362375
}
363376
};
364377
`,
365-
errors: [error('bar')],
378+
errors: [error('bar', 'Literal')],
366379
},
367380
{
368381
// `create` in variable.
@@ -376,7 +389,7 @@ ruleTester.run('no-missing-placeholders', rule, {
376389
}
377390
module.exports = { create };
378391
`,
379-
errors: [error('hasOwnProperty')],
392+
errors: [error('hasOwnProperty', 'ObjectExpression')],
380393
},
381394
{
382395
// messageId.
@@ -391,7 +404,19 @@ ruleTester.run('no-missing-placeholders', rule, {
391404
}
392405
};
393406
`,
394-
errors: [error('bar')],
407+
errors: [
408+
error(
409+
'bar',
410+
'Literal',
411+
// report on the messageId
412+
{
413+
line: 7,
414+
endLine: 7,
415+
column: 26,
416+
endColumn: 39,
417+
}
418+
),
419+
],
395420
},
396421
],
397422
});

0 commit comments

Comments
 (0)