Chromium Code Reviews| 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())); |
| } |