mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 19:48:20 +02:00
1205 lines
No EOL
30 KiB
C++
1205 lines
No EOL
30 KiB
C++
#include "BfElementVisitor.h"
|
|
|
|
USING_NS_BF;
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
BfElementVisitor::BfElementVisitor()
|
|
{
|
|
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfTypedValueExpression* typedValueExpr)
|
|
{
|
|
Visit(typedValueExpr->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfCommentNode* commentNode)
|
|
{
|
|
Visit(commentNode->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfPreprocesorIgnoredSectionNode* preprocesorIgnoredSection)
|
|
{
|
|
Visit(preprocesorIgnoredSection->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfPreprocessorNode* preprocessorNode)
|
|
{
|
|
Visit(preprocessorNode->ToBase());
|
|
|
|
VisitChild(preprocessorNode->mCommand);
|
|
VisitChild(preprocessorNode->mArgument);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfPreprocessorDefinedExpression* definedExpr)
|
|
{
|
|
Visit(definedExpr->ToBase());
|
|
|
|
VisitChild(definedExpr->mIdentifier);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfAttributeDirective* attributeDirective)
|
|
{
|
|
Visit(attributeDirective->ToBase());
|
|
|
|
VisitChild(attributeDirective->mAttrOpenToken); // Either [ or ,
|
|
VisitChild(attributeDirective->mAttrCloseToken);
|
|
VisitChild(attributeDirective->mAttributeTargetSpecifier);
|
|
|
|
VisitChild(attributeDirective->mAttributeTypeRef);
|
|
VisitChild(attributeDirective->mCtorOpenParen);
|
|
VisitChild(attributeDirective->mCtorCloseParen);
|
|
for (auto& val : attributeDirective->mArguments)
|
|
VisitChild(val);
|
|
for (auto& val : attributeDirective->mCommas)
|
|
VisitChild(val);
|
|
VisitChild(attributeDirective->mNextAttribute);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfGenericParamsDeclaration* genericParams)
|
|
{
|
|
Visit(genericParams->ToBase());
|
|
|
|
VisitChild(genericParams->mOpenChevron);
|
|
for (auto& val : genericParams->mGenericParams)
|
|
VisitChild(val);
|
|
for (auto& val : genericParams->mCommas)
|
|
VisitChild(val);
|
|
VisitChild(genericParams->mCloseChevron);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfGenericConstraintsDeclaration* genericConstraints)
|
|
{
|
|
Visit(genericConstraints->ToBase());
|
|
|
|
for (auto genericConstraint : genericConstraints->mGenericConstraints)
|
|
{
|
|
VisitChild(genericConstraint->mWhereToken);
|
|
VisitChild(genericConstraint->mGenericParamName);
|
|
VisitChild(genericConstraint->mColonToken);
|
|
for (auto val : genericConstraint->mConstraintTypes)
|
|
VisitChild(val);
|
|
for (auto val : genericConstraint->mCommas)
|
|
VisitChild(val);
|
|
}
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfGenericArgumentsNode* genericArgumentsNode)
|
|
{
|
|
Visit(genericArgumentsNode->ToBase());
|
|
|
|
VisitChild(genericArgumentsNode->mOpenChevron);
|
|
for (auto& val : genericArgumentsNode->mGenericArgs)
|
|
VisitChild(val);
|
|
for (auto& val : genericArgumentsNode->mCommas)
|
|
VisitChild(val);
|
|
VisitChild(genericArgumentsNode->mCloseChevron);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfStatement* stmt)
|
|
{
|
|
Visit(stmt->ToBase());
|
|
|
|
VisitChild(stmt->mTrailingSemicolon);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfLabelableStatement* labelableStmt)
|
|
{
|
|
Visit(labelableStmt->ToBase());
|
|
|
|
if (labelableStmt->mLabelNode != NULL)
|
|
{
|
|
VisitChild(labelableStmt->mLabelNode->mLabel);
|
|
VisitChild(labelableStmt->mLabelNode->mColonToken);
|
|
}
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfScopeNode* scopeNode)
|
|
{
|
|
Visit(scopeNode->ToBase());
|
|
|
|
VisitChild(scopeNode->mScopeToken);
|
|
VisitChild(scopeNode->mColonToken);
|
|
VisitChild(scopeNode->mTargetNode);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfNewNode* newNode)
|
|
{
|
|
Visit(newNode->ToBase());
|
|
|
|
VisitChild(newNode->mNewToken);
|
|
VisitChild(newNode->mColonToken);
|
|
VisitChild(newNode->mAllocNode);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfLabeledBlock* labeledBlock)
|
|
{
|
|
Visit(labeledBlock->ToBase());
|
|
|
|
VisitChild(labeledBlock->mBlock);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfExpression* expr)
|
|
{
|
|
Visit(expr->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfExpressionStatement* exprStmt)
|
|
{
|
|
Visit(exprStmt->ToBase());
|
|
|
|
VisitChild(exprStmt->mExpression);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfAttributedExpression* attribExpr)
|
|
{
|
|
Visit(attribExpr->ToBase());
|
|
|
|
VisitChild(attribExpr->mAttributes);
|
|
VisitChild(attribExpr->mExpression);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfEmptyStatement* emptyStmt)
|
|
{
|
|
Visit(emptyStmt->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfTokenNode* tokenNode)
|
|
{
|
|
Visit(tokenNode->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfTokenPairNode* tokenPairNode)
|
|
{
|
|
Visit(tokenPairNode->ToBase());
|
|
|
|
VisitChild(tokenPairNode->mLeft);
|
|
VisitChild(tokenPairNode->mRight);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfLiteralExpression* literalExpr)
|
|
{
|
|
Visit(literalExpr->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfIdentifierNode* identifierNode)
|
|
{
|
|
Visit(identifierNode->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfAttributedIdentifierNode * attrIdentifierNode)
|
|
{
|
|
Visit(attrIdentifierNode->ToBase());
|
|
VisitChild(attrIdentifierNode->mAttributes);
|
|
VisitChild(attrIdentifierNode->mIdentifier);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfQualifiedNameNode* nameNode)
|
|
{
|
|
Visit(nameNode->ToBase());
|
|
|
|
VisitChild(nameNode->mLeft);
|
|
VisitChild(nameNode->mDot);
|
|
VisitChild(nameNode->mRight);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfThisExpression* thisExpr)
|
|
{
|
|
Visit(thisExpr->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfBaseExpression* baseExpr)
|
|
{
|
|
Visit(baseExpr->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfMixinExpression* mixinExpr)
|
|
{
|
|
Visit(mixinExpr->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfSizedArrayCreateExpression* createExpr)
|
|
{
|
|
Visit(createExpr->ToBase());
|
|
|
|
VisitChild(createExpr->mTypeRef);
|
|
VisitChild(createExpr->mInitializer);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfCollectionInitializerExpression* collectionInitExpr)
|
|
{
|
|
Visit(collectionInitExpr->ToBase());
|
|
|
|
VisitChild(collectionInitExpr->mOpenBrace);
|
|
for (auto& val : collectionInitExpr->mValues)
|
|
VisitChild(val);
|
|
for (auto& val : collectionInitExpr->mCommas)
|
|
VisitChild(val);
|
|
VisitChild(collectionInitExpr->mCloseBrace);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfArraySizeSpecifier* arraySizeSpecifier)
|
|
{
|
|
Visit(arraySizeSpecifier->ToBase());
|
|
|
|
VisitChild(arraySizeSpecifier->mOpenToken);
|
|
for (auto& val : arraySizeSpecifier->mArguments)
|
|
VisitChild(val);
|
|
for (auto& val : arraySizeSpecifier->mCommas)
|
|
VisitChild(val);
|
|
VisitChild(arraySizeSpecifier->mCloseToken);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfTypeReference* typeRef)
|
|
{
|
|
Visit(typeRef->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfNamedTypeReference* typeRef)
|
|
{
|
|
Visit(typeRef->ToBase());
|
|
|
|
VisitChild(typeRef->mNameNode);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfQualifiedTypeReference* qualifiedTypeRef)
|
|
{
|
|
Visit(qualifiedTypeRef->ToBase());
|
|
|
|
VisitChild(qualifiedTypeRef->mLeft);
|
|
VisitChild(qualifiedTypeRef->mDot);
|
|
VisitChild(qualifiedTypeRef->mRight);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfDotTypeReference* typeRef)
|
|
{
|
|
Visit(typeRef->ToBase());
|
|
|
|
VisitChild(typeRef->mDotToken);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfVarTypeReference* typeRef)
|
|
{
|
|
Visit(typeRef->ToBase());
|
|
|
|
VisitChild(typeRef->mVarToken);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfVarRefTypeReference* typeRef)
|
|
{
|
|
Visit(typeRef->ToBase());
|
|
|
|
VisitChild(typeRef->mVarToken);
|
|
VisitChild(typeRef->mRefToken);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfLetTypeReference* typeRef)
|
|
{
|
|
Visit(typeRef->ToBase());
|
|
|
|
VisitChild(typeRef->mLetToken);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfConstTypeRef* typeRef)
|
|
{
|
|
Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
|
|
|
|
VisitChild(typeRef->mConstToken);
|
|
VisitChild(typeRef->mElementType);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfConstExprTypeRef* typeRef)
|
|
{
|
|
Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
|
|
|
|
VisitChild(typeRef->mConstToken);
|
|
VisitChild(typeRef->mConstExpr);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfRefTypeRef* typeRef)
|
|
{
|
|
Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
|
|
|
|
VisitChild(typeRef->mRefToken);
|
|
VisitChild(typeRef->mElementType);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfRetTypeTypeRef * typeRef)
|
|
{
|
|
Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
|
|
|
|
VisitChild(typeRef->mRetTypeToken);
|
|
VisitChild(typeRef->mOpenParen);
|
|
VisitChild(typeRef->mElementType);
|
|
VisitChild(typeRef->mCloseParen);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfArrayTypeRef* typeRef)
|
|
{
|
|
Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
|
|
|
|
VisitChild(typeRef->mElementType);
|
|
VisitChild(typeRef->mOpenBracket);
|
|
for (auto& val : typeRef->mParams)
|
|
VisitChild(val);
|
|
VisitChild(typeRef->mCloseBracket);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfGenericInstanceTypeRef* typeRef)
|
|
{
|
|
Visit(typeRef->ToBase());
|
|
|
|
VisitChild(typeRef->mOpenChevron);
|
|
for (auto& val : typeRef->mGenericArguments)
|
|
VisitChild(val);
|
|
if (typeRef->mCommas.mVals != NULL)
|
|
{
|
|
for (auto& val : typeRef->mCommas)
|
|
VisitChild(val);
|
|
}
|
|
VisitChild(typeRef->mCloseChevron);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfTupleTypeRef* typeRef)
|
|
{
|
|
Visit(typeRef->ToBase());
|
|
|
|
VisitChild(typeRef->mOpenParen);
|
|
for (auto& val : typeRef->mFieldNames)
|
|
VisitChild(val);
|
|
for (auto& val : typeRef->mFieldTypes)
|
|
VisitChild(val);
|
|
if (typeRef->mCommas.mVals != NULL)
|
|
{
|
|
for (auto& val : typeRef->mCommas)
|
|
VisitChild(val);
|
|
}
|
|
VisitChild(typeRef->mCloseParen);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfDeclTypeRef* typeRef)
|
|
{
|
|
Visit(typeRef->ToBase());
|
|
|
|
VisitChild(typeRef->mToken);
|
|
VisitChild(typeRef->mOpenParen);
|
|
VisitChild(typeRef->mTarget);
|
|
VisitChild(typeRef->mCloseParen);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfDelegateTypeRef* typeRef)
|
|
{
|
|
Visit((BfTypeReference*)typeRef);
|
|
|
|
VisitChild(typeRef->mTypeToken);
|
|
VisitChild(typeRef->mReturnType);
|
|
VisitChild(typeRef->mAttributes);
|
|
VisitChild(typeRef->mOpenParen);
|
|
for (auto& param : typeRef->mParams)
|
|
VisitChild(param);
|
|
for (auto& comma : typeRef->mCommas)
|
|
VisitChild(comma);
|
|
VisitChild(typeRef->mCloseParen);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfPointerTypeRef* typeRef)
|
|
{
|
|
Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
|
|
|
|
VisitChild(typeRef->mElementType);
|
|
VisitChild(typeRef->mStarNode);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfNullableTypeRef* typeRef)
|
|
{
|
|
Visit((BfTypeReference*)typeRef); // Skip the Elemented part so we can put the element in the right spot
|
|
|
|
VisitChild(typeRef->mElementType);
|
|
VisitChild(typeRef->mQuestionToken);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfVariableDeclaration* varDecl)
|
|
{
|
|
Visit(varDecl->ToBase());
|
|
|
|
VisitChild(varDecl->mAttributes);
|
|
VisitChild(varDecl->mModSpecifier);
|
|
VisitChild(varDecl->mTypeRef);
|
|
VisitChild(varDecl->mPrecedingComma);
|
|
VisitChild(varDecl->mNameNode); // Either BfIdentifierNode or BfTupleExpression
|
|
VisitChild(varDecl->mEqualsNode);
|
|
VisitChild(varDecl->mInitializer);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfLocalMethodDeclaration* methodDecl)
|
|
{
|
|
Visit(methodDecl->ToBase());
|
|
|
|
VisitChild(methodDecl->mMethodDeclaration);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfParameterDeclaration* paramDecl)
|
|
{
|
|
Visit(paramDecl->ToBase());
|
|
|
|
VisitChild(paramDecl->mModToken); // 'Params'
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfParamsExpression* paramsExpr)
|
|
{
|
|
Visit(paramsExpr->ToBase());
|
|
|
|
VisitChild(paramsExpr->mParamsToken);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfTypeAttrExpression* typeAttrExpr)
|
|
{
|
|
Visit(typeAttrExpr->ToBase());
|
|
|
|
VisitChild(typeAttrExpr->mToken);
|
|
VisitChild(typeAttrExpr->mOpenParen);
|
|
VisitChild(typeAttrExpr->mTypeRef);
|
|
VisitChild(typeAttrExpr->mCloseParen);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfDefaultExpression* defaultExpr)
|
|
{
|
|
Visit(defaultExpr->ToBase());
|
|
|
|
VisitChild(defaultExpr->mDefaultToken);
|
|
VisitChild(defaultExpr->mOpenParen);
|
|
VisitChild(defaultExpr->mTypeRef);
|
|
VisitChild(defaultExpr->mCloseParen);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfUninitializedExpression* uninitializedExpr)
|
|
{
|
|
Visit(uninitializedExpr->ToBase());
|
|
|
|
VisitChild(uninitializedExpr->mQuestionToken);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfCheckTypeExpression* checkTypeExpr)
|
|
{
|
|
Visit(checkTypeExpr->ToBase());
|
|
|
|
VisitChild(checkTypeExpr->mTarget);
|
|
VisitChild(checkTypeExpr->mIsToken);
|
|
VisitChild(checkTypeExpr->mTypeRef);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfDynamicCastExpression* dynCastExpr)
|
|
{
|
|
Visit(dynCastExpr->ToBase());
|
|
|
|
VisitChild(dynCastExpr->mTarget);
|
|
VisitChild(dynCastExpr->mAsToken);
|
|
VisitChild(dynCastExpr->mTypeRef);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfCastExpression* castExpr)
|
|
{
|
|
Visit(castExpr->ToBase());
|
|
|
|
VisitChild(castExpr->mOpenParen);
|
|
VisitChild(castExpr->mTypeRef);
|
|
VisitChild(castExpr->mCloseParen);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfDelegateBindExpression* bindExpr)
|
|
{
|
|
Visit(bindExpr->ToBase());
|
|
|
|
VisitChild(bindExpr->mNewToken);
|
|
VisitChild(bindExpr->mFatArrowToken);
|
|
VisitChild(bindExpr->mTarget);
|
|
VisitChild(bindExpr->mGenericArgs);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfLambdaBindExpression* lambdaBindExpr)
|
|
{
|
|
Visit(lambdaBindExpr->ToBase());
|
|
|
|
VisitChild(lambdaBindExpr->mNewToken);
|
|
if (lambdaBindExpr->mLambdaCapture != NULL)
|
|
{
|
|
VisitChild(lambdaBindExpr->mLambdaCapture->mOpenBracket);
|
|
VisitChild(lambdaBindExpr->mLambdaCapture->mCaptureToken);
|
|
VisitChild(lambdaBindExpr->mLambdaCapture->mCloseBracket);
|
|
}
|
|
|
|
VisitChild(lambdaBindExpr->mOpenParen);
|
|
VisitChild(lambdaBindExpr->mCloseParen);
|
|
for (auto& val : lambdaBindExpr->mParams)
|
|
VisitChild(val);
|
|
for (auto& val : lambdaBindExpr->mCommas)
|
|
VisitChild(val);
|
|
VisitChild(lambdaBindExpr->mFatArrowToken);
|
|
VisitChild(lambdaBindExpr->mBody); // Either expression or block
|
|
|
|
VisitChild(lambdaBindExpr->mDtor);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfObjectCreateExpression* newExpr)
|
|
{
|
|
Visit(newExpr->ToBase());
|
|
|
|
VisitChild(newExpr->mNewNode);
|
|
VisitChild(newExpr->mStarToken);
|
|
VisitChild(newExpr->mTypeRef);
|
|
VisitChild(newExpr->mOpenToken);
|
|
VisitChild(newExpr->mCloseToken);
|
|
for (auto& val : newExpr->mArguments)
|
|
VisitChild(val);
|
|
for (auto& val : newExpr->mCommas)
|
|
VisitChild(val);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfBoxExpression* boxExpr)
|
|
{
|
|
Visit(boxExpr->ToBase());
|
|
|
|
VisitChild(boxExpr->mAllocNode);
|
|
VisitChild(boxExpr->mBoxToken);
|
|
VisitChild(boxExpr->mExpression);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfScopedInvocationTarget* scopedTarget)
|
|
{
|
|
Visit(scopedTarget->ToBase());
|
|
|
|
VisitChild(scopedTarget->mTarget);
|
|
VisitChild(scopedTarget->mColonToken);
|
|
VisitChild(scopedTarget->mScopeName);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfThrowStatement* throwStmt)
|
|
{
|
|
Visit(throwStmt->ToBase());
|
|
|
|
VisitChild(throwStmt->mThrowToken);
|
|
VisitChild(throwStmt->mExpression);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfDeleteStatement* deleteStmt)
|
|
{
|
|
Visit(deleteStmt->ToBase());
|
|
|
|
VisitChild(deleteStmt->mDeleteToken);
|
|
VisitChild(deleteStmt->mTargetTypeToken);
|
|
VisitChild(deleteStmt->mAllocExpr);
|
|
VisitChild(deleteStmt->mExpression);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfInvocationExpression* invocationExpr)
|
|
{
|
|
Visit(invocationExpr->ToBase());
|
|
|
|
VisitChild(invocationExpr->mTarget);
|
|
VisitChild(invocationExpr->mOpenParen);
|
|
VisitChild(invocationExpr->mCloseParen);
|
|
VisitChild(invocationExpr->mGenericArgs);
|
|
for (auto& val : invocationExpr->mArguments)
|
|
VisitChild(val);
|
|
for (auto& val : invocationExpr->mCommas)
|
|
VisitChild(val);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfEnumCaseBindExpression* caseBindExpr)
|
|
{
|
|
Visit(caseBindExpr->ToBase());
|
|
|
|
VisitChild(caseBindExpr->mBindToken);
|
|
VisitChild(caseBindExpr->mEnumMemberExpr);
|
|
VisitChild(caseBindExpr->mBindNames);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfCaseExpression* caseExpr)
|
|
{
|
|
Visit(caseExpr->ToBase());
|
|
|
|
VisitChild(caseExpr->mCaseToken);
|
|
VisitChild(caseExpr->mCaseExpression);
|
|
VisitChild(caseExpr->mEqualsNode);
|
|
VisitChild(caseExpr->mValueExpression);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfSwitchCase* switchCase)
|
|
{
|
|
Visit(switchCase->ToBase());
|
|
|
|
VisitChild(switchCase->mCaseToken);
|
|
for (auto& val : switchCase->mCaseExpressions)
|
|
VisitChild(val);
|
|
for (auto& val : switchCase->mCaseCommas)
|
|
VisitChild(val);
|
|
VisitChild(switchCase->mColonToken);
|
|
VisitChild(switchCase->mCodeBlock);
|
|
VisitChild(switchCase->mEndingToken);
|
|
VisitChild(switchCase->mEndingSemicolonToken);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfWhenExpression* whenExpr)
|
|
{
|
|
Visit(whenExpr->ToBase());
|
|
|
|
VisitChild(whenExpr->mWhenToken);
|
|
VisitChild(whenExpr->mExpression);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfSwitchStatement* switchStmt)
|
|
{
|
|
Visit(switchStmt->ToBase());
|
|
|
|
VisitChild(switchStmt->mSwitchToken);
|
|
VisitChild(switchStmt->mOpenParen);
|
|
VisitChild(switchStmt->mSwitchValue);
|
|
VisitChild(switchStmt->mCloseParen);
|
|
|
|
VisitChild(switchStmt->mOpenBrace);
|
|
for (auto& val : switchStmt->mSwitchCases)
|
|
VisitChild(val);
|
|
VisitChild(switchStmt->mDefaultCase);
|
|
VisitChild(switchStmt->mCloseBrace);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfTryStatement* tryStmt)
|
|
{
|
|
Visit(tryStmt->ToBase());
|
|
|
|
VisitChild(tryStmt->mTryToken);
|
|
VisitChild(tryStmt->mStatement);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfCatchStatement* catchStmt)
|
|
{
|
|
Visit(catchStmt->ToBase());
|
|
|
|
VisitChild(catchStmt->mCatchToken);
|
|
VisitChild(catchStmt->mStatement);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfFinallyStatement* finallyStmt)
|
|
{
|
|
Visit(finallyStmt->ToBase());
|
|
|
|
VisitChild(finallyStmt->mFinallyToken);
|
|
VisitChild(finallyStmt->mStatement);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfCheckedStatement* checkedStmt)
|
|
{
|
|
Visit(checkedStmt->ToBase());
|
|
|
|
VisitChild(checkedStmt->mCheckedToken);
|
|
VisitChild(checkedStmt->mStatement);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfUncheckedStatement* uncheckedStmt)
|
|
{
|
|
Visit(uncheckedStmt->ToBase());
|
|
|
|
VisitChild(uncheckedStmt->mUncheckedToken);
|
|
VisitChild(uncheckedStmt->mStatement);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfIfStatement* ifStmt)
|
|
{
|
|
Visit(ifStmt->ToBase());
|
|
|
|
VisitChild(ifStmt->mIfToken);
|
|
VisitChild(ifStmt->mOpenParen);
|
|
VisitChild(ifStmt->mCondition);
|
|
VisitChild(ifStmt->mCloseParen);
|
|
VisitChild(ifStmt->mTrueStatement);
|
|
VisitChild(ifStmt->mElseToken);
|
|
VisitChild(ifStmt->mFalseStatement);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfDeferStatement* deferStmt)
|
|
{
|
|
Visit(deferStmt->ToBase());
|
|
|
|
VisitChild(deferStmt->mDeferToken);
|
|
VisitChild(deferStmt->mColonToken);
|
|
VisitChild(deferStmt->mScopeName);
|
|
|
|
if (deferStmt->mBind != NULL)
|
|
{
|
|
auto bind = deferStmt->mBind;
|
|
|
|
VisitChild(bind->mOpenBracket);
|
|
VisitChild(bind->mCloseBracket);
|
|
for (auto& val : bind->mParams)
|
|
VisitChild(val);
|
|
for (auto& val : bind->mCommas)
|
|
VisitChild(val);
|
|
}
|
|
|
|
VisitChild(deferStmt->mOpenParen);
|
|
VisitChild(deferStmt->mScopeToken);
|
|
VisitChild(deferStmt->mCloseParen);
|
|
|
|
VisitChild(deferStmt->mTargetNode);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfReturnStatement* returnStmt)
|
|
{
|
|
Visit(returnStmt->ToBase());
|
|
|
|
VisitChild(returnStmt->mReturnToken);
|
|
VisitChild(returnStmt->mExpression);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfYieldStatement* yieldStmt)
|
|
{
|
|
Visit(yieldStmt->ToBase());
|
|
|
|
VisitChild(yieldStmt->mReturnOrBreakToken);
|
|
VisitChild(yieldStmt->mExpression);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfUsingStatement* usingStmt)
|
|
{
|
|
Visit(usingStmt->ToBase());
|
|
|
|
VisitChild(usingStmt->mUsingToken);
|
|
VisitChild(usingStmt->mOpenParen);
|
|
VisitChild(usingStmt->mVariableDeclaration);
|
|
VisitChild(usingStmt->mCloseParen);
|
|
VisitChild(usingStmt->mEmbeddedStatement);
|
|
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfDoStatement* doStmt)
|
|
{
|
|
Visit(doStmt->ToBase());
|
|
|
|
VisitChild(doStmt->mDoToken);
|
|
VisitChild(doStmt->mEmbeddedStatement);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfRepeatStatement* repeatStmt)
|
|
{
|
|
Visit(repeatStmt->ToBase());
|
|
|
|
VisitChild(repeatStmt->mRepeatToken);
|
|
VisitChild(repeatStmt->mEmbeddedStatement);
|
|
VisitChild(repeatStmt->mWhileToken);
|
|
VisitChild(repeatStmt->mOpenParen);
|
|
VisitChild(repeatStmt->mCondition);
|
|
VisitChild(repeatStmt->mCloseParen);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfWhileStatement* whileStmt)
|
|
{
|
|
Visit(whileStmt->ToBase());
|
|
|
|
VisitChild(whileStmt->mWhileToken);
|
|
VisitChild(whileStmt->mOpenParen);
|
|
VisitChild(whileStmt->mCondition);
|
|
VisitChild(whileStmt->mCloseParen);
|
|
VisitChild(whileStmt->mEmbeddedStatement);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfBreakStatement* breakStmt)
|
|
{
|
|
Visit(breakStmt->ToBase());
|
|
|
|
VisitChild(breakStmt->mBreakNode);
|
|
VisitChild(breakStmt->mLabel);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfContinueStatement* continueStmt)
|
|
{
|
|
Visit(continueStmt->ToBase());
|
|
|
|
VisitChild(continueStmt->mContinueNode);
|
|
VisitChild(continueStmt->mLabel);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfFallthroughStatement* fallthroughStmt)
|
|
{
|
|
Visit(fallthroughStmt->ToBase());
|
|
|
|
VisitChild(fallthroughStmt->mFallthroughToken);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfForStatement* forStmt)
|
|
{
|
|
Visit(forStmt->ToBase());
|
|
|
|
VisitChild(forStmt->mForToken);
|
|
VisitChild(forStmt->mOpenParen);
|
|
for (auto& val : forStmt->mInitializers)
|
|
VisitChild(val);
|
|
for (auto& val : forStmt->mInitializerCommas)
|
|
VisitChild(val);
|
|
VisitChild(forStmt->mInitializerSemicolon);
|
|
VisitChild(forStmt->mCondition);
|
|
VisitChild(forStmt->mConditionSemicolon);
|
|
for (auto& val : forStmt->mIterators)
|
|
VisitChild(val);
|
|
for (auto& val : forStmt->mIteratorCommas)
|
|
VisitChild(val);
|
|
VisitChild(forStmt->mCloseParen);
|
|
VisitChild(forStmt->mEmbeddedStatement);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfForEachStatement* forEachStmt)
|
|
{
|
|
Visit(forEachStmt->ToBase());
|
|
|
|
VisitChild(forEachStmt->mForToken);
|
|
VisitChild(forEachStmt->mOpenParen);
|
|
VisitChild(forEachStmt->mReadOnlyToken);
|
|
VisitChild(forEachStmt->mVariableTypeRef);
|
|
VisitChild(forEachStmt->mVariableName);
|
|
VisitChild(forEachStmt->mInToken);
|
|
VisitChild(forEachStmt->mCollectionExpression);
|
|
VisitChild(forEachStmt->mCloseParen);
|
|
VisitChild(forEachStmt->mEmbeddedStatement);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfConditionalExpression* condExpr)
|
|
{
|
|
Visit(condExpr->ToBase());
|
|
|
|
VisitChild(condExpr->mConditionExpression);
|
|
VisitChild(condExpr->mQuestionToken);
|
|
VisitChild(condExpr->mTrueExpression);
|
|
VisitChild(condExpr->mColonToken);
|
|
VisitChild(condExpr->mFalseExpression);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfAssignmentExpression* assignExpr)
|
|
{
|
|
Visit(assignExpr->ToBase());
|
|
|
|
VisitChild(assignExpr->mOpToken);
|
|
VisitChild(assignExpr->mLeft);
|
|
VisitChild(assignExpr->mRight);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfParenthesizedExpression* parenExpr)
|
|
{
|
|
Visit(parenExpr->ToBase());
|
|
|
|
VisitChild(parenExpr->mOpenParen);
|
|
VisitChild(parenExpr->mExpression);
|
|
VisitChild(parenExpr->mCloseParen);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfTupleExpression* tupleExpr)
|
|
{
|
|
Visit(tupleExpr->ToBase());
|
|
|
|
VisitChild(tupleExpr->mOpenParen);
|
|
for (auto& val : tupleExpr->mNames)
|
|
{
|
|
if (val != NULL)
|
|
{
|
|
VisitChild(val->mNameNode);
|
|
VisitChild(val->mColonToken);
|
|
}
|
|
}
|
|
for (auto& val : tupleExpr->mValues)
|
|
VisitChild(val);
|
|
for (auto& val : tupleExpr->mCommas)
|
|
VisitChild(val);
|
|
VisitChild(tupleExpr->mCloseParen);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfMemberReferenceExpression* memberRefExpr)
|
|
{
|
|
Visit(memberRefExpr->ToBase());
|
|
|
|
VisitChild(memberRefExpr->mDotToken);
|
|
VisitChild(memberRefExpr->mTarget);
|
|
VisitChild(memberRefExpr->mMemberName);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfIndexerExpression* indexerExpr)
|
|
{
|
|
Visit(indexerExpr->ToBase());
|
|
|
|
VisitChild(indexerExpr->mTarget);
|
|
VisitChild(indexerExpr->mOpenBracket);
|
|
VisitChild(indexerExpr->mCloseBracket);
|
|
for (auto& arg : indexerExpr->mArguments)
|
|
VisitChild(arg);
|
|
for (auto& comma : indexerExpr->mCommas)
|
|
VisitChild(comma);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfUnaryOperatorExpression* binOpExpr)
|
|
{
|
|
Visit(binOpExpr->ToBase());
|
|
|
|
VisitChild(binOpExpr->mOpToken);
|
|
VisitChild(binOpExpr->mExpression);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfBinaryOperatorExpression* binOpExpr)
|
|
{
|
|
Visit(binOpExpr->ToBase());
|
|
|
|
VisitChild(binOpExpr->mOpToken);
|
|
VisitChild(binOpExpr->mLeft);
|
|
VisitChild(binOpExpr->mRight);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfConstructorDeclaration* ctorDeclaration)
|
|
{
|
|
Visit(ctorDeclaration->ToBase());
|
|
|
|
VisitChild(ctorDeclaration->mThisToken);
|
|
|
|
VisitChild(ctorDeclaration->mInitializerColonToken);
|
|
VisitChild(ctorDeclaration->mInitializer);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfDestructorDeclaration* dtorDeclaration)
|
|
{
|
|
Visit(dtorDeclaration->ToBase());
|
|
|
|
VisitChild(dtorDeclaration->mTildeToken);
|
|
VisitChild(dtorDeclaration->mThisToken);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfMethodDeclaration* methodDeclaration)
|
|
{
|
|
Visit(methodDeclaration->ToBase());
|
|
|
|
VisitChild(methodDeclaration->mAttributes);
|
|
VisitChild(methodDeclaration->mInternalSpecifier);
|
|
VisitChild(methodDeclaration->mProtectionSpecifier);
|
|
VisitChild(methodDeclaration->mReadOnlySpecifier);
|
|
VisitChild(methodDeclaration->mStaticSpecifier);
|
|
|
|
VisitChild(methodDeclaration->mReturnAttributes);
|
|
VisitChild(methodDeclaration->mExternSpecifier);
|
|
VisitChild(methodDeclaration->mVirtualSpecifier); // either 'virtual', 'override', or 'abstract'
|
|
VisitChild(methodDeclaration->mNewSpecifier);
|
|
VisitChild(methodDeclaration->mMixinSpecifier);
|
|
VisitChild(methodDeclaration->mPartialSpecifier);
|
|
VisitChild(methodDeclaration->mMutSpecifier);
|
|
VisitChild(methodDeclaration->mReturnType);
|
|
VisitChild(methodDeclaration->mExplicitInterface);
|
|
VisitChild(methodDeclaration->mExplicitInterfaceDotToken);
|
|
VisitChild(methodDeclaration->mNameNode);
|
|
VisitChild(methodDeclaration->mOpenParen);
|
|
for (auto& param : methodDeclaration->mParams)
|
|
VisitChild(param);
|
|
for (auto& comma : methodDeclaration->mCommas)
|
|
VisitChild(comma);
|
|
VisitChild(methodDeclaration->mCloseParen);
|
|
VisitChild(methodDeclaration->mGenericParams);
|
|
VisitChild(methodDeclaration->mGenericConstraintsDeclaration);
|
|
VisitChild(methodDeclaration->mEndSemicolon);
|
|
VisitChild(methodDeclaration->mFatArrowToken);
|
|
VisitChild(methodDeclaration->mBody);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfOperatorDeclaration* operatorDeclaration)
|
|
{
|
|
Visit(operatorDeclaration->ToBase());
|
|
|
|
VisitChild(operatorDeclaration->mExplicitToken);
|
|
VisitChild(operatorDeclaration->mOperatorToken);
|
|
VisitChild(operatorDeclaration->mOpTypeToken);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfPropertyMethodDeclaration* propertyDeclaration)
|
|
{
|
|
Visit(propertyDeclaration->ToBase());
|
|
|
|
VisitChild(propertyDeclaration->mAttributes);
|
|
VisitChild(propertyDeclaration->mProtectionSpecifier);
|
|
VisitChild(propertyDeclaration->mNameNode);
|
|
VisitChild(propertyDeclaration->mMutSpecifier);
|
|
VisitChild(propertyDeclaration->mBody);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfPropertyBodyExpression* propertyBodyExpression)
|
|
{
|
|
Visit(propertyBodyExpression->ToBase());
|
|
|
|
VisitChild(propertyBodyExpression->mFatTokenArrow);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfPropertyDeclaration* propertyDeclaration)
|
|
{
|
|
Visit(propertyDeclaration->ToBase());
|
|
|
|
VisitChild(propertyDeclaration->mAttributes);
|
|
VisitChild(propertyDeclaration->mInternalSpecifier);
|
|
VisitChild(propertyDeclaration->mProtectionSpecifier);
|
|
VisitChild(propertyDeclaration->mStaticSpecifier);
|
|
|
|
VisitChild(propertyDeclaration->mVirtualSpecifier); // either 'virtual', 'override', or 'abstract'
|
|
VisitChild(propertyDeclaration->mExplicitInterface);
|
|
VisitChild(propertyDeclaration->mExplicitInterfaceDotToken);
|
|
|
|
if (auto block = BfNodeDynCast<BfBlock>(propertyDeclaration->mDefinitionBlock))
|
|
{
|
|
VisitChild(block->mOpenBrace);
|
|
for (auto& method : propertyDeclaration->mMethods)
|
|
VisitChild(method);
|
|
VisitChild(block->mCloseBrace);
|
|
}
|
|
else
|
|
{
|
|
VisitChild(propertyDeclaration->mDefinitionBlock);
|
|
for (auto& method : propertyDeclaration->mMethods)
|
|
VisitChild(method);
|
|
}
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfIndexerDeclaration* indexerDeclaration)
|
|
{
|
|
Visit(indexerDeclaration->ToBase());
|
|
|
|
VisitChild(indexerDeclaration->mThisToken);
|
|
VisitChild(indexerDeclaration->mOpenBracket);
|
|
for (auto& param : indexerDeclaration->mParams)
|
|
VisitChild(param);
|
|
for (auto& comma : indexerDeclaration->mCommas)
|
|
VisitChild(comma);
|
|
VisitChild(indexerDeclaration->mCloseBracket);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfFieldDeclaration* fieldDeclaration)
|
|
{
|
|
Visit(fieldDeclaration->ToBase());
|
|
|
|
VisitChild(fieldDeclaration->mAttributes);
|
|
VisitChild(fieldDeclaration->mInternalSpecifier);
|
|
VisitChild(fieldDeclaration->mProtectionSpecifier);
|
|
VisitChild(fieldDeclaration->mStaticSpecifier);
|
|
|
|
VisitChild(fieldDeclaration->mPrecedingComma);
|
|
VisitChild(fieldDeclaration->mConstSpecifier);
|
|
VisitChild(fieldDeclaration->mReadOnlySpecifier);
|
|
VisitChild(fieldDeclaration->mVolatileSpecifier);
|
|
VisitChild(fieldDeclaration->mNewSpecifier);
|
|
VisitChild(fieldDeclaration->mExternSpecifier);
|
|
VisitChild(fieldDeclaration->mTypeRef);
|
|
VisitChild(fieldDeclaration->mNameNode);
|
|
VisitChild(fieldDeclaration->mEqualsNode);
|
|
VisitChild(fieldDeclaration->mInitializer);
|
|
VisitChild(fieldDeclaration->mFieldDtor);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfEnumCaseDeclaration* enumCaseDeclaration)
|
|
{
|
|
Visit(enumCaseDeclaration->ToBase());
|
|
|
|
VisitChild(enumCaseDeclaration->mCaseToken);
|
|
for (auto& entry : enumCaseDeclaration->mEntries)
|
|
VisitChild(entry);
|
|
for (auto& comma : enumCaseDeclaration->mCommas)
|
|
VisitChild(comma);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfFieldDtorDeclaration* fieldDtorDeclaration)
|
|
{
|
|
Visit(fieldDtorDeclaration->ToBase());
|
|
|
|
VisitChild(fieldDtorDeclaration->mTildeToken);
|
|
VisitChild(fieldDtorDeclaration->mBody);
|
|
VisitChild(fieldDtorDeclaration->mNextFieldDtor);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfTypeDeclaration* typeDeclaration)
|
|
{
|
|
Visit(typeDeclaration->ToBase());
|
|
|
|
VisitChild(typeDeclaration->mAttributes);
|
|
VisitChild(typeDeclaration->mAbstractSpecifier);
|
|
VisitChild(typeDeclaration->mSealedSpecifier);
|
|
VisitChild(typeDeclaration->mInternalSpecifier);
|
|
VisitChild(typeDeclaration->mProtectionSpecifier);
|
|
VisitChild(typeDeclaration->mStaticSpecifier);
|
|
VisitChild(typeDeclaration->mPartialSpecifier);
|
|
VisitChild(typeDeclaration->mTypeNode);
|
|
VisitChild(typeDeclaration->mNameNode);
|
|
VisitChild(typeDeclaration->mColonToken);
|
|
for (auto& baseClass : typeDeclaration->mBaseClasses)
|
|
VisitChild(baseClass);
|
|
for (auto& comma : typeDeclaration->mBaseClassCommas)
|
|
VisitChild(comma);
|
|
|
|
VisitChild(typeDeclaration->mGenericParams);
|
|
VisitChild(typeDeclaration->mGenericConstraintsDeclaration);
|
|
|
|
VisitChild(typeDeclaration->mDefineNode);
|
|
/*if (typeDeclaration->mDefineBlock != NULL)
|
|
{
|
|
for (auto& member : *typeDeclaration->mDefineBlock)
|
|
VisitChild(member);
|
|
}*/
|
|
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfTypeAliasDeclaration* typeDeclaration)
|
|
{
|
|
Visit(typeDeclaration->ToBase());
|
|
|
|
VisitChild(typeDeclaration->mEqualsToken);
|
|
VisitChild(typeDeclaration->mAliasToType);
|
|
VisitChild(typeDeclaration->mEndSemicolon);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfUsingDirective* usingDirective)
|
|
{
|
|
Visit(usingDirective->ToBase());
|
|
|
|
VisitChild(usingDirective->mUsingToken);
|
|
VisitChild(usingDirective->mNamespace);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfUsingStaticDirective * usingDirective)
|
|
{
|
|
Visit(usingDirective->ToBase());
|
|
|
|
VisitChild(usingDirective->mUsingToken);
|
|
VisitChild(usingDirective->mStaticToken);
|
|
VisitChild(usingDirective->mTypeRef);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfNamespaceDeclaration* namespaceDeclaration)
|
|
{
|
|
Visit(namespaceDeclaration->ToBase());
|
|
|
|
VisitChild(namespaceDeclaration->mNamespaceNode);
|
|
VisitChild(namespaceDeclaration->mNameNode);
|
|
VisitChild(namespaceDeclaration->mBlock);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfBlock* block)
|
|
{
|
|
Visit(block->ToBase());
|
|
|
|
VisitChild(block->mOpenBrace);
|
|
VisitMembers(block);
|
|
VisitChild(block->mCloseBrace);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfRootNode* rootNode)
|
|
{
|
|
Visit(rootNode->ToBase());
|
|
|
|
VisitMembers(rootNode);
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfInlineAsmStatement* asmStmt)
|
|
{
|
|
Visit(asmStmt->ToBase());
|
|
}
|
|
|
|
void BfElementVisitor::Visit(BfInlineAsmInstruction* asmInst)
|
|
{
|
|
Visit(asmInst->ToBase());
|
|
} |