blob: f30e10060c9672ad61cac82c1c64d48dff914391 [file] [log] [blame]
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#include "vm/kernel.h"
#if !defined(DART_PRECOMPILED_RUNTIME)
namespace dart {
namespace kernel {
template <typename T>
void VisitList(List<T>* list, Visitor* visitor) {
for (int i = 0; i < list->length(); ++i) {
(*list)[i]->AcceptVisitor(visitor);
}
}
Node::~Node() {}
TreeNode::~TreeNode() {}
void TreeNode::AcceptVisitor(Visitor* visitor) {
AcceptTreeVisitor(visitor);
}
Library::~Library() {}
void Library::AcceptTreeVisitor(TreeVisitor* visitor) {
visitor->VisitLibrary(this);
}
void Library::VisitChildren(Visitor* visitor) {
VisitList(&classes(), visitor);
VisitList(&procedures(), visitor);
VisitList(&fields(), visitor);
}
Class::~Class() {}
void Class::AcceptTreeVisitor(TreeVisitor* visitor) {
AcceptClassVisitor(visitor);
}
NormalClass::~NormalClass() {}
void NormalClass::AcceptClassVisitor(ClassVisitor* visitor) {
visitor->VisitNormalClass(this);
}
void NormalClass::AcceptReferenceVisitor(ClassReferenceVisitor* visitor) {
visitor->VisitNormalClassReference(this);
}
void NormalClass::VisitChildren(Visitor* visitor) {
VisitList(&type_parameters(), visitor);
if (super_class() != NULL) visitor->VisitInterfaceType(super_class());
VisitList(&implemented_classes(), visitor);
VisitList(&constructors(), visitor);
VisitList(&procedures(), visitor);
VisitList(&fields(), visitor);
}
MixinClass::~MixinClass() {}
void MixinClass::AcceptClassVisitor(ClassVisitor* visitor) {
visitor->VisitMixinClass(this);
}
void MixinClass::AcceptReferenceVisitor(ClassReferenceVisitor* visitor) {
visitor->VisitMixinClassReference(this);
}
void MixinClass::VisitChildren(Visitor* visitor) {
VisitList(&type_parameters(), visitor);
visitor->VisitInterfaceType(first());
visitor->VisitInterfaceType(second());
VisitList(&implemented_classes(), visitor);
VisitList(&constructors(), visitor);
}
Member::~Member() {}
void Member::AcceptTreeVisitor(TreeVisitor* visitor) {
AcceptMemberVisitor(visitor);
}
Field::~Field() {}
void Field::AcceptMemberVisitor(MemberVisitor* visitor) {
visitor->VisitField(this);
}
void Field::AcceptReferenceVisitor(MemberReferenceVisitor* visitor) {
visitor->VisitFieldReference(this);
}
void Field::VisitChildren(Visitor* visitor) {
type()->AcceptDartTypeVisitor(visitor);
visitor->VisitName(name());
if (initializer() != NULL) initializer()->AcceptExpressionVisitor(visitor);
}
Constructor::~Constructor() {}
void Constructor::AcceptMemberVisitor(MemberVisitor* visitor) {
visitor->VisitConstructor(this);
}
void Constructor::AcceptReferenceVisitor(MemberReferenceVisitor* visitor) {
visitor->VisitConstructorReference(this);
}
void Constructor::VisitChildren(Visitor* visitor) {
visitor->VisitName(name());
visitor->VisitFunctionNode(function());
VisitList(&initializers(), visitor);
}
Procedure::~Procedure() {}
void Procedure::AcceptMemberVisitor(MemberVisitor* visitor) {
visitor->VisitProcedure(this);
}
void Procedure::AcceptReferenceVisitor(MemberReferenceVisitor* visitor) {
visitor->VisitProcedureReference(this);
}
void Procedure::VisitChildren(Visitor* visitor) {
visitor->VisitName(name());
if (function() != NULL) visitor->VisitFunctionNode(function());
}
Initializer::~Initializer() {}
void Initializer::AcceptTreeVisitor(TreeVisitor* visitor) {
AcceptInitializerVisitor(visitor);
}
InvalidInitializer::~InvalidInitializer() {}
void InvalidInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) {
visitor->VisitInvalidInitializer(this);
}
void InvalidInitializer::VisitChildren(Visitor* visitor) {}
FieldInitializer::~FieldInitializer() {}
void FieldInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) {
visitor->VisitFieldInitializer(this);
}
void FieldInitializer::VisitChildren(Visitor* visitor) {
visitor->VisitFieldReference(field());
value()->AcceptExpressionVisitor(visitor);
}
SuperInitializer::~SuperInitializer() {}
void SuperInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) {
visitor->VisitSuperInitializer(this);
}
void SuperInitializer::VisitChildren(Visitor* visitor) {
visitor->VisitConstructorReference(target());
visitor->VisitArguments(arguments());
}
RedirectingInitializer::~RedirectingInitializer() {}
void RedirectingInitializer::AcceptInitializerVisitor(
InitializerVisitor* visitor) {
visitor->VisitRedirectingInitializer(this);
}
void RedirectingInitializer::VisitChildren(Visitor* visitor) {
visitor->VisitConstructorReference(target());
visitor->VisitArguments(arguments());
}
LocalInitializer::~LocalInitializer() {}
void LocalInitializer::AcceptInitializerVisitor(InitializerVisitor* visitor) {
visitor->VisitLocalInitializer(this);
}
void LocalInitializer::VisitChildren(Visitor* visitor) {
visitor->VisitVariableDeclaration(variable());
}
FunctionNode::~FunctionNode() {}
void FunctionNode::AcceptTreeVisitor(TreeVisitor* visitor) {
visitor->VisitFunctionNode(this);
}
void FunctionNode::VisitChildren(Visitor* visitor) {
VisitList(&type_parameters(), visitor);
VisitList(&positional_parameters(), visitor);
VisitList(&named_parameters(), visitor);
if (return_type() != NULL) return_type()->AcceptDartTypeVisitor(visitor);
if (body() != NULL) body()->AcceptStatementVisitor(visitor);
}
Expression::~Expression() {}
void Expression::AcceptTreeVisitor(TreeVisitor* visitor) {
AcceptExpressionVisitor(visitor);
}
InvalidExpression::~InvalidExpression() {}
void InvalidExpression::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitInvalidExpression(this);
}
void InvalidExpression::VisitChildren(Visitor* visitor) {}
VariableGet::~VariableGet() {}
void VariableGet::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitVariableGet(this);
}
void VariableGet::VisitChildren(Visitor* visitor) {}
VariableSet::~VariableSet() {}
void VariableSet::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitVariableSet(this);
}
void VariableSet::VisitChildren(Visitor* visitor) {
expression()->AcceptExpressionVisitor(visitor);
}
PropertyGet::~PropertyGet() {}
void PropertyGet::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitPropertyGet(this);
}
void PropertyGet::VisitChildren(Visitor* visitor) {
receiver()->AcceptExpressionVisitor(visitor);
visitor->VisitName(name());
}
PropertySet::~PropertySet() {}
void PropertySet::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitPropertySet(this);
}
void PropertySet::VisitChildren(Visitor* visitor) {
receiver()->AcceptExpressionVisitor(visitor);
visitor->VisitName(name());
value()->AcceptExpressionVisitor(visitor);
}
DirectPropertyGet::~DirectPropertyGet() {}
void DirectPropertyGet::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitDirectPropertyGet(this);
}
void DirectPropertyGet::VisitChildren(Visitor* visitor) {
receiver()->AcceptExpressionVisitor(visitor);
target()->AcceptReferenceVisitor(visitor);
}
DirectPropertySet::~DirectPropertySet() {}
void DirectPropertySet::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitDirectPropertySet(this);
}
void DirectPropertySet::VisitChildren(Visitor* visitor) {
receiver()->AcceptExpressionVisitor(visitor);
target()->AcceptReferenceVisitor(visitor);
value()->AcceptExpressionVisitor(visitor);
}
StaticGet::~StaticGet() {}
void StaticGet::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitStaticGet(this);
}
void StaticGet::VisitChildren(Visitor* visitor) {
target()->AcceptReferenceVisitor(visitor);
}
StaticSet::~StaticSet() {}
void StaticSet::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitStaticSet(this);
}
void StaticSet::VisitChildren(Visitor* visitor) {
target()->AcceptReferenceVisitor(visitor);
expression()->AcceptExpressionVisitor(visitor);
}
Arguments::~Arguments() {}
void Arguments::AcceptTreeVisitor(TreeVisitor* visitor) {
visitor->VisitArguments(this);
}
void Arguments::VisitChildren(Visitor* visitor) {
VisitList(&types(), visitor);
VisitList(&positional(), visitor);
VisitList(&named(), visitor);
}
NamedExpression::~NamedExpression() {}
void NamedExpression::AcceptTreeVisitor(TreeVisitor* visitor) {
visitor->VisitNamedExpression(this);
}
void NamedExpression::VisitChildren(Visitor* visitor) {
expression()->AcceptExpressionVisitor(visitor);
}
MethodInvocation::~MethodInvocation() {}
void MethodInvocation::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitMethodInvocation(this);
}
void MethodInvocation::VisitChildren(Visitor* visitor) {
receiver()->AcceptExpressionVisitor(visitor);
visitor->VisitName(name());
visitor->VisitArguments(arguments());
}
DirectMethodInvocation::~DirectMethodInvocation() {}
void DirectMethodInvocation::AcceptExpressionVisitor(
ExpressionVisitor* visitor) {
visitor->VisitDirectMethodInvocation(this);
}
void DirectMethodInvocation::VisitChildren(Visitor* visitor) {
receiver()->AcceptExpressionVisitor(visitor);
visitor->VisitProcedureReference(target());
visitor->VisitArguments(arguments());
}
StaticInvocation::~StaticInvocation() {}
void StaticInvocation::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitStaticInvocation(this);
}
void StaticInvocation::VisitChildren(Visitor* visitor) {
visitor->VisitProcedureReference(procedure());
visitor->VisitArguments(arguments());
}
ConstructorInvocation::~ConstructorInvocation() {}
void ConstructorInvocation::AcceptExpressionVisitor(
ExpressionVisitor* visitor) {
visitor->VisitConstructorInvocation(this);
}
void ConstructorInvocation::VisitChildren(Visitor* visitor) {
visitor->VisitConstructorReference(target());
visitor->VisitArguments(arguments());
}
Not::~Not() {}
void Not::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitNot(this);
}
void Not::VisitChildren(Visitor* visitor) {
expression()->AcceptExpressionVisitor(visitor);
}
LogicalExpression::~LogicalExpression() {}
void LogicalExpression::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitLogicalExpression(this);
}
void LogicalExpression::VisitChildren(Visitor* visitor) {
left()->AcceptExpressionVisitor(visitor);
right()->AcceptExpressionVisitor(visitor);
}
ConditionalExpression::~ConditionalExpression() {}
void ConditionalExpression::AcceptExpressionVisitor(
ExpressionVisitor* visitor) {
visitor->VisitConditionalExpression(this);
}
void ConditionalExpression::VisitChildren(Visitor* visitor) {
condition()->AcceptExpressionVisitor(visitor);
then()->AcceptExpressionVisitor(visitor);
otherwise()->AcceptExpressionVisitor(visitor);
}
StringConcatenation::~StringConcatenation() {}
void StringConcatenation::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitStringConcatenation(this);
}
void StringConcatenation::VisitChildren(Visitor* visitor) {
VisitList(&expressions(), visitor);
}
IsExpression::~IsExpression() {}
void IsExpression::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitIsExpression(this);
}
void IsExpression::VisitChildren(Visitor* visitor) {
operand()->AcceptExpressionVisitor(visitor);
type()->AcceptDartTypeVisitor(visitor);
}
AsExpression::~AsExpression() {}
void AsExpression::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitAsExpression(this);
}
void AsExpression::VisitChildren(Visitor* visitor) {
operand()->AcceptExpressionVisitor(visitor);
type()->AcceptDartTypeVisitor(visitor);
}
BasicLiteral::~BasicLiteral() {}
void BasicLiteral::VisitChildren(Visitor* visitor) {}
StringLiteral::~StringLiteral() {}
void StringLiteral::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitStringLiteral(this);
}
BigintLiteral::~BigintLiteral() {}
void BigintLiteral::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitBigintLiteral(this);
}
IntLiteral::~IntLiteral() {}
void IntLiteral::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitIntLiteral(this);
}
DoubleLiteral::~DoubleLiteral() {}
void DoubleLiteral::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitDoubleLiteral(this);
}
BoolLiteral::~BoolLiteral() {}
void BoolLiteral::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitBoolLiteral(this);
}
NullLiteral::~NullLiteral() {}
void NullLiteral::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitNullLiteral(this);
}
SymbolLiteral::~SymbolLiteral() {}
void SymbolLiteral::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitSymbolLiteral(this);
}
void SymbolLiteral::VisitChildren(Visitor* visitor) {}
TypeLiteral::~TypeLiteral() {}
void TypeLiteral::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitTypeLiteral(this);
}
void TypeLiteral::VisitChildren(Visitor* visitor) {
type()->AcceptDartTypeVisitor(visitor);
}
ThisExpression::~ThisExpression() {}
void ThisExpression::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitThisExpression(this);
}
void ThisExpression::VisitChildren(Visitor* visitor) {}
Rethrow::~Rethrow() {}
void Rethrow::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitRethrow(this);
}
void Rethrow::VisitChildren(Visitor* visitor) {}
Throw::~Throw() {}
void Throw::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitThrow(this);
}
void Throw::VisitChildren(Visitor* visitor) {
expression()->AcceptExpressionVisitor(visitor);
}
ListLiteral::~ListLiteral() {}
void ListLiteral::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitListLiteral(this);
}
void ListLiteral::VisitChildren(Visitor* visitor) {
type()->AcceptDartTypeVisitor(visitor);
VisitList(&expressions(), visitor);
}
MapLiteral::~MapLiteral() {}
void MapLiteral::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitMapLiteral(this);
}
void MapLiteral::VisitChildren(Visitor* visitor) {
key_type()->AcceptDartTypeVisitor(visitor);
value_type()->AcceptDartTypeVisitor(visitor);
VisitList(&entries(), visitor);
}
MapEntry::~MapEntry() {}
void MapEntry::AcceptTreeVisitor(TreeVisitor* visitor) {
visitor->VisitMapEntry(this);
}
void MapEntry::VisitChildren(Visitor* visitor) {
key()->AcceptExpressionVisitor(visitor);
value()->AcceptExpressionVisitor(visitor);
}
AwaitExpression::~AwaitExpression() {}
void AwaitExpression::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitAwaitExpression(this);
}
void AwaitExpression::VisitChildren(Visitor* visitor) {
operand()->AcceptExpressionVisitor(visitor);
}
FunctionExpression::~FunctionExpression() {}
void FunctionExpression::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitFunctionExpression(this);
}
void FunctionExpression::VisitChildren(Visitor* visitor) {
visitor->VisitFunctionNode(function());
}
Let::~Let() {}
void Let::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitLet(this);
}
void Let::VisitChildren(Visitor* visitor) {
visitor->VisitVariableDeclaration(variable());
body()->AcceptExpressionVisitor(visitor);
}
BlockExpression::~BlockExpression() {}
void BlockExpression::AcceptExpressionVisitor(ExpressionVisitor* visitor) {
visitor->VisitBlockExpression(this);
}
void BlockExpression::VisitChildren(Visitor* visitor) {
visitor->VisitBlock(body());
value()->AcceptExpressionVisitor(visitor);
}
Statement::~Statement() {}
void Statement::AcceptTreeVisitor(TreeVisitor* visitor) {
AcceptStatementVisitor(visitor);
}
InvalidStatement::~InvalidStatement() {}
void InvalidStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitInvalidStatement(this);
}
void InvalidStatement::VisitChildren(Visitor* visitor) {}
ExpressionStatement::~ExpressionStatement() {}
void ExpressionStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitExpressionStatement(this);
}
void ExpressionStatement::VisitChildren(Visitor* visitor) {
expression()->AcceptExpressionVisitor(visitor);
}
Block::~Block() {}
void Block::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitBlock(this);
}
void Block::VisitChildren(Visitor* visitor) {
VisitList(&statements(), visitor);
}
EmptyStatement::~EmptyStatement() {}
void EmptyStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitEmptyStatement(this);
}
void EmptyStatement::VisitChildren(Visitor* visitor) {}
AssertStatement::~AssertStatement() {}
void AssertStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitAssertStatement(this);
}
void AssertStatement::VisitChildren(Visitor* visitor) {
condition()->AcceptExpressionVisitor(visitor);
if (message() != NULL) message()->AcceptExpressionVisitor(visitor);
}
LabeledStatement::~LabeledStatement() {}
void LabeledStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitLabeledStatement(this);
}
void LabeledStatement::VisitChildren(Visitor* visitor) {
body()->AcceptStatementVisitor(visitor);
}
BreakStatement::~BreakStatement() {}
void BreakStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitBreakStatement(this);
}
void BreakStatement::VisitChildren(Visitor* visitor) {}
WhileStatement::~WhileStatement() {}
void WhileStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitWhileStatement(this);
}
void WhileStatement::VisitChildren(Visitor* visitor) {
condition()->AcceptExpressionVisitor(visitor);
body()->AcceptStatementVisitor(visitor);
}
DoStatement::~DoStatement() {}
void DoStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitDoStatement(this);
}
void DoStatement::VisitChildren(Visitor* visitor) {
body()->AcceptStatementVisitor(visitor);
condition()->AcceptExpressionVisitor(visitor);
}
ForStatement::~ForStatement() {}
void ForStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitForStatement(this);
}
void ForStatement::VisitChildren(Visitor* visitor) {
VisitList(&variables(), visitor);
if (condition() != NULL) condition()->AcceptExpressionVisitor(visitor);
VisitList(&updates(), visitor);
body()->AcceptStatementVisitor(visitor);
}
ForInStatement::~ForInStatement() {}
void ForInStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitForInStatement(this);
}
void ForInStatement::VisitChildren(Visitor* visitor) {
visitor->VisitVariableDeclaration(variable());
iterable()->AcceptExpressionVisitor(visitor);
body()->AcceptStatementVisitor(visitor);
}
SwitchStatement::~SwitchStatement() {}
void SwitchStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitSwitchStatement(this);
}
void SwitchStatement::VisitChildren(Visitor* visitor) {
condition()->AcceptExpressionVisitor(visitor);
VisitList(&cases(), visitor);
}
SwitchCase::~SwitchCase() {}
void SwitchCase::AcceptTreeVisitor(TreeVisitor* visitor) {
visitor->VisitSwitchCase(this);
}
void SwitchCase::VisitChildren(Visitor* visitor) {
VisitList(&expressions(), visitor);
body()->AcceptStatementVisitor(visitor);
}
ContinueSwitchStatement::~ContinueSwitchStatement() {}
void ContinueSwitchStatement::AcceptStatementVisitor(
StatementVisitor* visitor) {
visitor->VisitContinueSwitchStatement(this);
}
void ContinueSwitchStatement::VisitChildren(Visitor* visitor) {}
IfStatement::~IfStatement() {}
void IfStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitIfStatement(this);
}
void IfStatement::VisitChildren(Visitor* visitor) {
condition()->AcceptExpressionVisitor(visitor);
then()->AcceptStatementVisitor(visitor);
otherwise()->AcceptStatementVisitor(visitor);
}
ReturnStatement::~ReturnStatement() {}
void ReturnStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitReturnStatement(this);
}
void ReturnStatement::VisitChildren(Visitor* visitor) {
if (expression() != NULL) expression()->AcceptExpressionVisitor(visitor);
}
TryCatch::~TryCatch() {}
void TryCatch::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitTryCatch(this);
}
void TryCatch::VisitChildren(Visitor* visitor) {
body()->AcceptStatementVisitor(visitor);
VisitList(&catches(), visitor);
}
Catch::~Catch() {}
void Catch::AcceptTreeVisitor(TreeVisitor* visitor) {
visitor->VisitCatch(this);
}
void Catch::VisitChildren(Visitor* visitor) {
if (guard() != NULL) guard()->AcceptDartTypeVisitor(visitor);
if (exception() != NULL) visitor->VisitVariableDeclaration(exception());
if (stack_trace() != NULL) visitor->VisitVariableDeclaration(stack_trace());
body()->AcceptStatementVisitor(visitor);
}
TryFinally::~TryFinally() {}
void TryFinally::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitTryFinally(this);
}
void TryFinally::VisitChildren(Visitor* visitor) {
body()->AcceptStatementVisitor(visitor);
finalizer()->AcceptStatementVisitor(visitor);
}
YieldStatement::~YieldStatement() {}
void YieldStatement::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitYieldStatement(this);
}
void YieldStatement::VisitChildren(Visitor* visitor) {
expression()->AcceptExpressionVisitor(visitor);
}
VariableDeclaration::~VariableDeclaration() {}
void VariableDeclaration::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitVariableDeclaration(this);
}
void VariableDeclaration::VisitChildren(Visitor* visitor) {
if (type() != NULL) type()->AcceptDartTypeVisitor(visitor);
if (initializer() != NULL) initializer()->AcceptExpressionVisitor(visitor);
}
FunctionDeclaration::~FunctionDeclaration() {}
void FunctionDeclaration::AcceptStatementVisitor(StatementVisitor* visitor) {
visitor->VisitFunctionDeclaration(this);
}
void FunctionDeclaration::VisitChildren(Visitor* visitor) {
visitor->VisitVariableDeclaration(variable());
visitor->VisitFunctionNode(function());
}
Name::~Name() {}
void Name::AcceptVisitor(Visitor* visitor) {
visitor->VisitName(this);
}
void Name::VisitChildren(Visitor* visitor) {}
InferredValue::~InferredValue() {}
void InferredValue::AcceptVisitor(Visitor* visitor) {
visitor->VisitInferredValue(this);
}
void InferredValue::VisitChildren(Visitor* visitor) {}
DartType::~DartType() {}
void DartType::AcceptVisitor(Visitor* visitor) {
AcceptDartTypeVisitor(visitor);
}
InvalidType::~InvalidType() {}
void InvalidType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) {
visitor->VisitInvalidType(this);
}
void InvalidType::VisitChildren(Visitor* visitor) {}
DynamicType::~DynamicType() {}
void DynamicType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) {
visitor->VisitDynamicType(this);
}
void DynamicType::VisitChildren(Visitor* visitor) {}
VoidType::~VoidType() {}
void VoidType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) {
visitor->VisitVoidType(this);
}
void VoidType::VisitChildren(Visitor* visitor) {}
InterfaceType::~InterfaceType() {}
void InterfaceType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) {
visitor->VisitInterfaceType(this);
}
void InterfaceType::VisitChildren(Visitor* visitor) {
klass()->AcceptReferenceVisitor(visitor);
VisitList(&type_arguments(), visitor);
}
FunctionType::~FunctionType() {}
void FunctionType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) {
visitor->VisitFunctionType(this);
}
void FunctionType::VisitChildren(Visitor* visitor) {
VisitList(&type_parameters(), visitor);
VisitList(&positional_parameters(), visitor);
for (int i = 0; i < named_parameters().length(); ++i) {
named_parameters()[i]->second()->AcceptDartTypeVisitor(visitor);
}
return_type()->AcceptDartTypeVisitor(visitor);
}
TypeParameterType::~TypeParameterType() {}
void TypeParameterType::AcceptDartTypeVisitor(DartTypeVisitor* visitor) {
visitor->VisitTypeParameterType(this);
}
void TypeParameterType::VisitChildren(Visitor* visitor) {}
TypeParameter::~TypeParameter() {}
void TypeParameter::AcceptTreeVisitor(TreeVisitor* visitor) {
visitor->VisitTypeParameter(this);
}
void TypeParameter::VisitChildren(Visitor* visitor) {
bound()->AcceptDartTypeVisitor(visitor);
}
Program::~Program() {}
void Program::AcceptTreeVisitor(TreeVisitor* visitor) {
visitor->VisitProgram(this);
}
void Program::VisitChildren(Visitor* visitor) {
VisitList(&libraries(), visitor);
visitor->VisitProcedureReference(main_method());
}
} // namespace kernel
} // namespace dart
#endif // !defined(DART_PRECOMPILED_RUNTIME)