in lib/util.js [41:98]
exports.isReference = function(path, name) {
var node = path.value;
if (!n.Identifier.check(node)) {
return false;
}
if (name && node.name !== name) {
return false;
}
var parent = path.parent.value;
switch (parent.type) {
case "VariableDeclarator":
return path.name === "init";
case "MemberExpression":
return path.name === "object" || (
parent.computed && path.name === "property"
);
case "FunctionExpression":
case "FunctionDeclaration":
case "ArrowFunctionExpression":
if (path.name === "id") {
return false;
}
if (path.parentPath.name === "params" &&
parent.params === path.parentPath.value &&
parent.params[path.name] === node) {
return false;
}
return true;
case "ClassDeclaration":
case "ClassExpression":
return path.name !== "id";
case "CatchClause":
return path.name !== "param";
case "Property":
case "MethodDefinition":
return path.name !== "key";
case "ImportSpecifier":
case "ImportDefaultSpecifier":
case "ImportNamespaceSpecifier":
case "LabeledStatement":
return false;
default:
return true;
}
};