2019-08-23 11:56:54 -07:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "BeefySysLib/Common.h"
|
|
|
|
#include "BfAst.h"
|
|
|
|
|
|
|
|
NS_BF_BEGIN
|
|
|
|
|
|
|
|
class BfDeferEvalChecker : public BfStructuralVisitor
|
|
|
|
{
|
|
|
|
public:
|
2022-06-23 11:53:21 -07:00
|
|
|
BfAstNode* mRootNode;
|
2019-08-23 11:56:54 -07:00
|
|
|
bool mNeedsDeferEval;
|
2021-01-22 13:25:37 -08:00
|
|
|
bool mDeferDelegateBind;
|
2021-01-22 11:37:39 -08:00
|
|
|
bool mDeferLiterals;
|
2019-08-23 11:56:54 -07:00
|
|
|
|
|
|
|
public:
|
|
|
|
BfDeferEvalChecker();
|
|
|
|
|
2022-06-23 11:53:21 -07:00
|
|
|
void Check(BfAstNode* node);
|
|
|
|
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfAstNode* node) override;
|
|
|
|
|
2022-05-16 18:35:07 -07:00
|
|
|
virtual void Visit(BfInitializerExpression* collectionInitExpr);
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfLiteralExpression* literalExpr) override;
|
|
|
|
virtual void Visit(BfCastExpression* castExpr) override;
|
|
|
|
virtual void Visit(BfParenthesizedExpression* parenExpr) override;
|
|
|
|
virtual void Visit(BfTupleExpression* tupleExpr) override;
|
|
|
|
virtual void Visit(BfMemberReferenceExpression* memberRefExpr) override;
|
|
|
|
virtual void Visit(BfInvocationExpression* invocationExpr) override;
|
2021-01-22 11:37:39 -08:00
|
|
|
virtual void Visit(BfLambdaBindExpression* lambdaBindExpr) override;
|
2021-01-22 13:25:37 -08:00
|
|
|
virtual void Visit(BfDelegateBindExpression* delegateBindExpr) override;
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfConditionalExpression* condExpr) override;
|
|
|
|
virtual void Visit(BfUnaryOperatorExpression* unaryOpExpr) override;
|
|
|
|
virtual void Visit(BfObjectCreateExpression* objCreateExpr) override;
|
2022-06-23 11:53:21 -07:00
|
|
|
virtual void Visit(BfBinaryOperatorExpression* binOpExpr) override;
|
2019-08-23 11:56:54 -07:00
|
|
|
virtual void Visit(BfDefaultExpression* defaultExpr) override;
|
2022-06-23 11:53:21 -07:00
|
|
|
virtual void Visit(BfVariableDeclaration* varDecl) override;
|
2019-08-23 11:56:54 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
NS_BF_END
|