Skip to content

Commit eaa2d91

Browse files
cjihrigMylesBorins
authored andcommitted
tools: simplify lowercase-name-for-primitive rule
PR-URL: #17653 Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Jon Moss <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]> Reviewed-By: Anatoli Papirovski <[email protected]>
1 parent b826528 commit eaa2d91

File tree

1 file changed

+25
-28
lines changed

1 file changed

+25
-28
lines changed

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

+25-28
Original file line numberDiff line numberDiff line change
@@ -9,41 +9,38 @@
99
// Rule Definition
1010
//------------------------------------------------------------------------------
1111

12+
const astSelector = 'NewExpression[callee.property.name="TypeError"]' +
13+
'[arguments.0.value="ERR_INVALID_ARG_TYPE"]';
14+
1215
const primitives = [
1316
'number', 'string', 'boolean', 'null', 'undefined'
1417
];
1518

1619
module.exports = function(context) {
17-
return {
18-
NewExpression(node) {
19-
if (
20-
node.callee.property &&
21-
node.callee.property.name === 'TypeError' &&
22-
node.arguments[0].value === 'ERR_INVALID_ARG_TYPE'
23-
) {
24-
checkNamesArgument(node.arguments[2]);
25-
}
20+
function checkNamesArgument(node) {
21+
const names = node.arguments[2];
2622

27-
function checkNamesArgument(names) {
28-
switch (names.type) {
29-
case 'Literal':
30-
checkName(names.value);
31-
break;
32-
case 'ArrayExpression':
33-
names.elements.forEach((name) => {
34-
checkName(name.value);
35-
});
36-
break;
37-
}
38-
}
23+
switch (names.type) {
24+
case 'Literal':
25+
checkName(node, names.value);
26+
break;
27+
case 'ArrayExpression':
28+
names.elements.forEach((name) => {
29+
checkName(node, name.value);
30+
});
31+
break;
32+
}
33+
}
3934

40-
function checkName(name) {
41-
const lowercaseName = name.toLowerCase();
42-
if (primitives.includes(lowercaseName) && !primitives.includes(name)) {
43-
const msg = `primitive should use lowercase: ${name}`;
44-
context.report(node, msg);
45-
}
46-
}
35+
function checkName(node, name) {
36+
const lowercaseName = name.toLowerCase();
37+
if (primitives.includes(lowercaseName) && !primitives.includes(name)) {
38+
const msg = `primitive should use lowercase: ${name}`;
39+
context.report(node, msg);
4740
}
41+
}
42+
43+
return {
44+
[astSelector]: (node) => checkNamesArgument(node)
4845
};
4946
};

0 commit comments

Comments
 (0)