From 6a158db9dae023c8d50b175619758711b4252511 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Thu, 6 Jan 2022 11:56:12 -0500 Subject: [PATCH] Fixed enum result classify issue --- IDEHelper/Compiler/BfCompiler.cpp | 7 +++++++ IDEHelper/Compiler/BfCompiler.h | 1 + IDEHelper/Compiler/BfExprEvaluator.cpp | 4 +--- IDEHelper/Compiler/BfModule.cpp | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/IDEHelper/Compiler/BfCompiler.cpp b/IDEHelper/Compiler/BfCompiler.cpp index 6eadc643..6c3719b8 100644 --- a/IDEHelper/Compiler/BfCompiler.cpp +++ b/IDEHelper/Compiler/BfCompiler.cpp @@ -5312,6 +5312,13 @@ bool BfCompiler::IsDataResolvePass() return (mResolvePassData != NULL) && (mResolvePassData->mResolveType == BfResolveType_GetResultString); } +bool BfCompiler::WantsClassifyNode(BfAstNode* node) +{ + return ((mResolvePassData != NULL) && + (node->IsFromParser(mResolvePassData->mParser)) && + (mResolvePassData->mSourceClassifier != NULL)); +} + BfAutoComplete* BfCompiler::GetAutoComplete() { if (mResolvePassData != NULL) diff --git a/IDEHelper/Compiler/BfCompiler.h b/IDEHelper/Compiler/BfCompiler.h index ed840e29..cf91c4b2 100644 --- a/IDEHelper/Compiler/BfCompiler.h +++ b/IDEHelper/Compiler/BfCompiler.h @@ -485,6 +485,7 @@ public: int GetDynCastVDataCount(); bool IsAutocomplete(); bool IsDataResolvePass(); + bool WantsClassifyNode(BfAstNode* node); BfAutoComplete* GetAutoComplete(); bool IsHotCompile(); bool IsSkippingExtraResolveChecks(); diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index ba5ecc8b..7462d4ba 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -8560,9 +8560,7 @@ BfTypedValue BfExprEvaluator::MatchMethod(BfAstNode* targetSrc, BfMethodBoundExp if (enumResult) { - if ((mModule->mCompiler->mResolvePassData != NULL) && - (targetSrc->IsFromParser(mModule->mCompiler->mResolvePassData->mParser)) && - (mModule->mCompiler->mResolvePassData->mSourceClassifier != NULL)) + if (mModule->mCompiler->WantsClassifyNode(targetSrc)) { mModule->mCompiler->mResolvePassData->mSourceClassifier->SetElementType(targetSrc, BfSourceElementType_Normal); } diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index 12e68428..904ddc70 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -2810,7 +2810,7 @@ void BfModule::SetElementType(BfAstNode* astNode, BfSourceElementType elementTyp { if ((mCompiler->mResolvePassData != NULL) && (mCompiler->mResolvePassData->mSourceClassifier != NULL) && - (astNode->IsFromParser( mCompiler->mResolvePassData->mParser))) + (astNode->IsFromParser(mCompiler->mResolvePassData->mParser))) { mCompiler->mResolvePassData->mSourceClassifier->SetElementType(astNode, elementType); } @@ -16280,7 +16280,7 @@ void BfModule::EmitDtorBody() while (fieldDtor != NULL) { - if ((mCompiler->mResolvePassData != NULL) && (mCompiler->mResolvePassData->mSourceClassifier != NULL)) + if (mCompiler->WantsClassifyNode(fieldDtor)) { mCompiler->mResolvePassData->mSourceClassifier->SetElementType(fieldDtor, BfSourceElementType_Normal); mCompiler->mResolvePassData->mSourceClassifier->VisitChild(fieldDtor);