// Copyright 2015 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "src/v8.h" #include "src/ast/ast-expression-visitor.h" #include "src/ast/ast.h" #include "src/ast/scopes.h" #include "src/codegen.h" namespace v8 { namespace internal { AstExpressionVisitor::AstExpressionVisitor(Isolate* isolate, Expression* root) : AstTraversalVisitor(isolate), root_(root) {} AstExpressionVisitor::AstExpressionVisitor(uintptr_t stack_limit, Expression* root) : AstTraversalVisitor(stack_limit), root_(root) {} void AstExpressionVisitor::Run() { Visit(root_); } void AstExpressionVisitor::VisitFunctionLiteral(FunctionLiteral* expr) { VisitExpression(expr); AstTraversalVisitor::VisitFunctionLiteral(expr); } void AstExpressionVisitor::VisitNativeFunctionLiteral( NativeFunctionLiteral* expr) { AstTraversalVisitor::VisitNativeFunctionLiteral(expr); } void AstExpressionVisitor::VisitDoExpression(DoExpression* expr) { VisitExpression(expr); AstTraversalVisitor::VisitDoExpression(expr); } void AstExpressionVisitor::VisitConditional(Conditional* expr) { VisitExpression(expr); AstTraversalVisitor::VisitConditional(expr); } void AstExpressionVisitor::VisitVariableProxy(VariableProxy* expr) { VisitExpression(expr); AstTraversalVisitor::VisitVariableProxy(expr); } void AstExpressionVisitor::VisitLiteral(Literal* expr) { VisitExpression(expr); AstTraversalVisitor::VisitLiteral(expr); } void AstExpressionVisitor::VisitRegExpLiteral(RegExpLiteral* expr) { VisitExpression(expr); AstTraversalVisitor::VisitRegExpLiteral(expr); } void AstExpressionVisitor::VisitObjectLiteral(ObjectLiteral* expr) { VisitExpression(expr); AstTraversalVisitor::VisitObjectLiteral(expr); } void AstExpressionVisitor::VisitArrayLiteral(ArrayLiteral* expr) { VisitExpression(expr); AstTraversalVisitor::VisitArrayLiteral(expr); } void AstExpressionVisitor::VisitAssignment(Assignment* expr) { VisitExpression(expr); AstTraversalVisitor::VisitAssignment(expr); } void AstExpressionVisitor::VisitYield(Yield* expr) { VisitExpression(expr); AstTraversalVisitor::VisitYield(expr); } void AstExpressionVisitor::VisitThrow(Throw* expr) { VisitExpression(expr); AstTraversalVisitor::VisitThrow(expr); } void AstExpressionVisitor::VisitProperty(Property* expr) { VisitExpression(expr); AstTraversalVisitor::VisitProperty(expr); } void AstExpressionVisitor::VisitCall(Call* expr) { VisitExpression(expr); AstTraversalVisitor::VisitCall(expr); } void AstExpressionVisitor::VisitCallNew(CallNew* expr) { VisitExpression(expr); AstTraversalVisitor::VisitCallNew(expr); } void AstExpressionVisitor::VisitCallRuntime(CallRuntime* expr) { VisitExpression(expr); AstTraversalVisitor::VisitCallRuntime(expr); } void AstExpressionVisitor::VisitUnaryOperation(UnaryOperation* expr) { VisitExpression(expr); AstTraversalVisitor::VisitUnaryOperation(expr); } void AstExpressionVisitor::VisitCountOperation(CountOperation* expr) { VisitExpression(expr); AstTraversalVisitor::VisitCountOperation(expr); } void AstExpressionVisitor::VisitBinaryOperation(BinaryOperation* expr) { VisitExpression(expr); AstTraversalVisitor::VisitBinaryOperation(expr); } void AstExpressionVisitor::VisitCompareOperation(CompareOperation* expr) { VisitExpression(expr); AstTraversalVisitor::VisitCompareOperation(expr); } void AstExpressionVisitor::VisitThisFunction(ThisFunction* expr) { VisitExpression(expr); AstTraversalVisitor::VisitThisFunction(expr); } void AstExpressionVisitor::VisitClassLiteral(ClassLiteral* expr) { VisitExpression(expr); AstTraversalVisitor::VisitClassLiteral(expr); } void AstExpressionVisitor::VisitSpread(Spread* expr) { VisitExpression(expr); AstTraversalVisitor::VisitSpread(expr); } void AstExpressionVisitor::VisitSuperPropertyReference( SuperPropertyReference* expr) { VisitExpression(expr); AstTraversalVisitor::VisitSuperPropertyReference(expr); } void AstExpressionVisitor::VisitSuperCallReference(SuperCallReference* expr) { VisitExpression(expr); AstTraversalVisitor::VisitSuperCallReference(expr); } void AstExpressionVisitor::VisitCaseClause(CaseClause* expr) { AstTraversalVisitor::VisitCaseClause(expr); } void AstExpressionVisitor::VisitEmptyParentheses(EmptyParentheses* expr) { AstTraversalVisitor::VisitEmptyParentheses(expr); } void AstExpressionVisitor::VisitRewritableExpression( RewritableExpression* expr) { VisitExpression(expr); AstTraversalVisitor::VisitRewritableExpression(expr); } } // namespace internal } // namespace v8