fix blacklist traversal bug - fixes #49
This commit is contained in:
@@ -13,7 +13,7 @@ exports.ObjectExpression = function (node, parent, opts, generateUid) {
|
||||
if (prop.computed) {
|
||||
hasComputed = true;
|
||||
computed.unshift(prop);
|
||||
if (!hasThis) hasThis = traverse.hasType(prop, "ThisExpression");
|
||||
hasThis = hasThis || traverse.hasType(prop, "ThisExpression");
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
|
||||
@@ -29,7 +29,7 @@ var traverse = module.exports = function (parent, callbacks, blacklistTypes) {
|
||||
if (!node) return;
|
||||
|
||||
// type is blacklisted
|
||||
if (blacklistTypes.indexOf(node.type) >= 0) return;
|
||||
if (_.contains(blacklistTypes, node.type)) return;
|
||||
|
||||
// enter
|
||||
var result = callbacks.enter(node, parent, obj, key);
|
||||
@@ -40,6 +40,7 @@ var traverse = module.exports = function (parent, callbacks, blacklistTypes) {
|
||||
// replace node
|
||||
if (result != null) node = obj[key] = result;
|
||||
|
||||
// traverse node
|
||||
traverse(node, callbacks, blacklistTypes);
|
||||
|
||||
// exit
|
||||
@@ -71,16 +72,18 @@ traverse.FUNCTION_TYPES = ["ArrowFunctionExpression", "FunctionDeclaration", "Fu
|
||||
traverse.Delete = {};
|
||||
|
||||
traverse.hasType = function (tree, type, blacklistTypes) {
|
||||
if (tree.type === type) return true;
|
||||
blacklistTypes = [].concat(blacklistTypes || []);
|
||||
|
||||
var has = false;
|
||||
blacklistTypes = blacklistTypes || [];
|
||||
|
||||
if (_.isArray(tree)) {
|
||||
return !!_.find(tree, function (node) {
|
||||
return traverse.hasType(node, type, blacklistTypes);
|
||||
});
|
||||
} else {
|
||||
if (_.contains(blacklistTypes, tree.type)) return false;
|
||||
if (tree.type === type) return true;
|
||||
|
||||
traverse(tree, function (node) {
|
||||
if (node.type === type) {
|
||||
has = true;
|
||||
|
||||
Reference in New Issue
Block a user