@development-environment/linting
Version:
Automatically catches many issues as they happen
45 lines (37 loc) • 1.39 kB
JavaScript
/**
* @fileoverview Disallow shadowing of NaN, undefined, and Infinity (ES5 section 15.1.1)
* @author Michael Ficarra
*/
;
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
module.exports = {
meta: {
docs: {
description: "disallow identifiers from shadowing restricted names",
category: "Variables",
recommended: false,
url: "https://eslint.org/docs/rules/no-shadow-restricted-names"
},
schema: []
},
create(context) {
const RESTRICTED = ["undefined", "NaN", "Infinity", "arguments", "eval"];
return {
"VariableDeclaration, :function, CatchClause"(node) {
for (const variable of context.getDeclaredVariables(node)) {
if (variable.defs.length > 0 && RESTRICTED.includes(variable.name)) {
context.report({
node: variable.defs[0].name,
message: "Shadowing of global property '{{idName}}'.",
data: {
idName: variable.name
}
});
}
}
}
};
}
};