Index: src/parsing/parser.cc |
diff --git a/src/parsing/parser.cc b/src/parsing/parser.cc |
index 778da5f8f0db1360787c353ec49403ae4b834503..a996de0ff9b5144f3a414121638a1f7741ef3d0b 100644 |
--- a/src/parsing/parser.cc |
+++ b/src/parsing/parser.cc |
@@ -7,8 +7,8 @@ |
#include "src/api.h" |
#include "src/ast/ast.h" |
#include "src/ast/ast-expression-rewriter.h" |
-#include "src/ast/ast-expression-visitor.h" |
#include "src/ast/ast-literal-reindexer.h" |
+#include "src/ast/ast-traversal-visitor.h" |
#include "src/ast/scopeinfo.h" |
#include "src/bailout-reason.h" |
#include "src/base/platform/platform.h" |
@@ -4637,26 +4637,28 @@ Statement* Parser::BuildAssertIsCoercible(Variable* var) { |
} |
-class InitializerRewriter : public AstExpressionVisitor { |
+class InitializerRewriter final |
+ : public AstTraversalVisitor<InitializerRewriter> { |
public: |
InitializerRewriter(uintptr_t stack_limit, Expression* root, Parser* parser, |
Scope* scope) |
- : AstExpressionVisitor(stack_limit, root), |
+ : AstTraversalVisitor(stack_limit, root), |
parser_(parser), |
scope_(scope) {} |
- private: |
- void VisitExpression(Expression* expr) override { |
- RewritableExpression* to_rewrite = expr->AsRewritableExpression(); |
- if (to_rewrite == nullptr || to_rewrite->is_rewritten()) return; |
+ protected: |
adamk
2016/07/21 18:11:57
Same note about "protected", maybe I'm missing som
nickie
2016/07/22 08:40:18
Nope, I was... :-)
Done, in the same way.
|
+ friend class AstTraversalVisitor<InitializerRewriter>; |
+ // Just rewrite destructuring assignments wrapped in RewritableExpressions. |
+ void VisitRewritableExpression(RewritableExpression* to_rewrite) { |
+ if (to_rewrite->is_rewritten()) return; |
Parser::PatternRewriter::RewriteDestructuringAssignment(parser_, to_rewrite, |
scope_); |
} |
// Code in function literals does not need to be eagerly rewritten, it will be |
// rewritten when scheduled. |
- void VisitFunctionLiteral(FunctionLiteral* expr) override {} |
+ void VisitFunctionLiteral(FunctionLiteral* expr) {} |
private: |
Parser* parser_; |