babel/scripts/eslint_rules/no-undefined-identifier.js

47 lines
1.1 KiB
JavaScript

"use strict";
function argumentsIsUndefinedString(argumentsArray) {
return (
argumentsArray.length === 1 &&
argumentsArray[0].type === "Literal" &&
argumentsArray[0].value === "undefined"
);
}
module.exports = {
meta: {
schema: [],
},
create: function(context) {
if (context.getFilename().indexOf("packages/babel-plugin-") === -1) {
return {};
}
return {
CallExpression: function(node) {
const callee = node.callee;
if (
callee.type === "MemberExpression" &&
argumentsIsUndefinedString(node.arguments)
) {
const object = callee.object,
property = callee.property;
if (
object.type === "Identifier" &&
object.name === "t" &&
property.type === "Identifier" &&
property.name === "identifier"
) {
context.report(
node,
"Use path.scope.buildUndefinedNode() to create an undefined identifier directly."
);
}
}
},
};
},
};