test for falsy nodes in tail call transformer subtransform

This commit is contained in:
Sebastian McKenzie 2015-02-10 22:39:46 +11:00
parent 45b70d7fba
commit edc8bee38e

View File

@ -132,6 +132,8 @@ TailCallTransformer.prototype.run = function () {
};
TailCallTransformer.prototype.subTransform = function (node) {
if (!node) return;
var handler = this["subTransform" + node.type];
if (handler) return handler.call(this, node);
};
@ -324,8 +326,10 @@ var secondPass = {
var thirdPass = {
enter: function (node, parent, scope, state) {
if (!t.isExpressionStatement(node)) return;
var expr = node.expression;
if (!t.isAssignmentExpression(expr)) return;
if (!state.needsThis && expr.left === state.getThisId()) {
this.remove();
} else if (!state.needsArguments && expr.left === state.getArgumentsId() && t.isArrayExpression(expr.right)) {