// 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