diff --git a/lib/6to5/traverse/index.js b/lib/6to5/traverse/index.js index 04adfd5a50..32f1a66280 100644 --- a/lib/6to5/traverse/index.js +++ b/lib/6to5/traverse/index.js @@ -34,20 +34,30 @@ var traverse = module.exports = function (parent, callbacks, blacklistTypes) { // type is blacklisted if (_.contains(blacklistTypes, node.type)) return; - // enter - var result = callbacks.enter(node, parent, obj, key); - - // stop iteration - if (result === false) return; + var result; // replace node - if (result != null) node = obj[key] = result; + var maybeReplace = function (result) { + if (result != null) obj[key] = result; + }; + + // enter + if (callbacks.enter) { + result = callbacks.enter(node, parent, obj, key); + + // stop iteration + if (result === false) return; + + maybeReplace(result); + } // traverse node traverse(node, callbacks, blacklistTypes); // exit - if (callbacks.exit) callbacks.exit(node, parent, obj, key); + if (callbacks.exit) { + maybeReplace(callbacks.exit(node, parent, obj, key)); + } }; if (_.isArray(nodes)) {