Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Unified Diff: src/ast-expression-visitor.cc

Issue 1309813007: [es6] implement destructuring assignment (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Cache te right scope in DeclareAndInitializeVariables() Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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()));
}

Powered by Google App Engine
This is Rietveld 408576698