Chromium Code Reviews| 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_; |