Skip to content

Commit 6187aec

Browse files
shobhitchittoraMylesBorins
authored andcommitted
tools: autofixer for lowercase-name-for-primitive
PR-URL: #17715 Refs: #16636 Reviewed-By: Anatoli Papirovski <[email protected]> Reviewed-By: Weijia Wang <[email protected]>
1 parent 038e526 commit 6187aec

File tree

2 files changed

+31
-12
lines changed

2 files changed

+31
-12
lines changed

test/parallel/test-eslint-lowercase-name-for-primitive.js

+15-7
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,28 @@ new RuleTester().run('lowercase-name-for-primitive', rule, {
2222
],
2323
invalid: [
2424
{
25-
code: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a", "Number")',
26-
errors: [{ message: 'primitive should use lowercase: Number' }]
25+
code: 'new errors.TypeError(\'ERR_INVALID_ARG_TYPE\', \'a\', ' +
26+
'\'Number\')',
27+
errors: [{ message: 'primitive should use lowercase: Number' }],
28+
output: 'new errors.TypeError(\'ERR_INVALID_ARG_TYPE\', \'a\', ' +
29+
'\'number\')'
2730
},
2831
{
29-
code: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a", "STRING")',
30-
errors: [{ message: 'primitive should use lowercase: STRING' }]
32+
code: 'new errors.TypeError(\'ERR_INVALID_ARG_TYPE\', \'a\', ' +
33+
'\'STRING\')',
34+
errors: [{ message: 'primitive should use lowercase: STRING' }],
35+
output: 'new errors.TypeError(\'ERR_INVALID_ARG_TYPE\', \'a\', ' +
36+
'\'string\')'
3137
},
3238
{
33-
code: 'new errors.TypeError("ERR_INVALID_ARG_TYPE", "a",' +
34-
'["String", "Number"])',
39+
code: 'new errors.TypeError(\'ERR_INVALID_ARG_TYPE\', \'a\', ' +
40+
'[\'String\', \'Number\']) ',
3541
errors: [
3642
{ message: 'primitive should use lowercase: String' },
3743
{ message: 'primitive should use lowercase: Number' }
38-
]
44+
],
45+
output: 'new errors.TypeError(\'ERR_INVALID_ARG_TYPE\', \'a\', ' +
46+
'[\'string\', \'number\']) '
3947
}
4048
]
4149
});

tools/eslint-rules/lowercase-name-for-primitive.js

+16-5
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,33 @@ module.exports = function(context) {
2222

2323
switch (names.type) {
2424
case 'Literal':
25-
checkName(node, names.value);
25+
checkName(names);
2626
break;
2727
case 'ArrayExpression':
2828
names.elements.forEach((name) => {
29-
checkName(node, name.value);
29+
checkName(name);
3030
});
3131
break;
3232
}
3333
}
3434

35-
function checkName(node, name) {
35+
function checkName(node) {
36+
const name = node.value;
3637
const lowercaseName = name.toLowerCase();
37-
if (primitives.includes(lowercaseName) && !primitives.includes(name)) {
38+
if (name !== lowercaseName && primitives.includes(lowercaseName)) {
3839
const msg = `primitive should use lowercase: ${name}`;
39-
context.report(node, msg);
40+
context.report({
41+
node,
42+
message: msg,
43+
fix: (fixer) => {
44+
return fixer.replaceText(
45+
node,
46+
`'${lowercaseName}'`
47+
);
48+
}
49+
});
4050
}
51+
4152
}
4253

4354
return {

0 commit comments

Comments
 (0)