Index: src/ast-expression-visitor.cc |
diff --git a/src/ast-expression-visitor.cc b/src/ast-expression-visitor.cc |
index b24abae24f1f220062ffda8d610a4ed36b4fe015..a2f37dea499cc505f66196eee1ca51d5e77d979a 100644 |
--- a/src/ast-expression-visitor.cc |
+++ b/src/ast-expression-visitor.cc |
@@ -32,6 +32,16 @@ namespace internal { |
} while (false) |
+#define RECURSE_EXPRESSION_RETURN_IF_VISIT_NODE(call) \ |
+ do { \ |
+ AstNode* node = call; \ |
+ if (node) { \ |
+ RECURSE_EXPRESSION(Visit(node)); \ |
+ return; \ |
+ } \ |
+ } while (false) |
+ |
+ |
AstExpressionVisitor::AstExpressionVisitor(Isolate* isolate, Expression* root) |
: root_(root), depth_(0) { |
InitializeAstVisitor(isolate); |
@@ -255,7 +265,9 @@ void AstExpressionVisitor::VisitArrayLiteral(ArrayLiteral* expr) { |
void AstExpressionVisitor::VisitAssignment(Assignment* expr) { |
+ RETURN_IF_VISIT_NODE(expr->destructuring_assignment()); |
VisitExpression(expr); |
+ RECURSE_EXPRESSION_RETURN_IF_VISIT_NODE(expr->destructuring_assignment()); |
adamk
2015/11/25 21:05:28
Is this needed because VisitExpression could mutat
caitp (gmail)
2015/11/25 21:41:51
I suppose it can, the InitializerRewriter visitor
|
RECURSE_EXPRESSION(Visit(expr->target())); |
RECURSE_EXPRESSION(Visit(expr->value())); |
} |