1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 12:32:20 +02:00

Fixed enum result classify issue

This commit is contained in:
Brian Fiete 2022-01-06 11:56:12 -05:00
parent 4b1d7047d1
commit 6a158db9da
4 changed files with 11 additions and 5 deletions

View file

@ -5312,6 +5312,13 @@ bool BfCompiler::IsDataResolvePass()
return (mResolvePassData != NULL) && (mResolvePassData->mResolveType == BfResolveType_GetResultString); 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() BfAutoComplete* BfCompiler::GetAutoComplete()
{ {
if (mResolvePassData != NULL) if (mResolvePassData != NULL)

View file

@ -485,6 +485,7 @@ public:
int GetDynCastVDataCount(); int GetDynCastVDataCount();
bool IsAutocomplete(); bool IsAutocomplete();
bool IsDataResolvePass(); bool IsDataResolvePass();
bool WantsClassifyNode(BfAstNode* node);
BfAutoComplete* GetAutoComplete(); BfAutoComplete* GetAutoComplete();
bool IsHotCompile(); bool IsHotCompile();
bool IsSkippingExtraResolveChecks(); bool IsSkippingExtraResolveChecks();

View file

@ -8560,9 +8560,7 @@ BfTypedValue BfExprEvaluator::MatchMethod(BfAstNode* targetSrc, BfMethodBoundExp
if (enumResult) if (enumResult)
{ {
if ((mModule->mCompiler->mResolvePassData != NULL) && if (mModule->mCompiler->WantsClassifyNode(targetSrc))
(targetSrc->IsFromParser(mModule->mCompiler->mResolvePassData->mParser)) &&
(mModule->mCompiler->mResolvePassData->mSourceClassifier != NULL))
{ {
mModule->mCompiler->mResolvePassData->mSourceClassifier->SetElementType(targetSrc, BfSourceElementType_Normal); mModule->mCompiler->mResolvePassData->mSourceClassifier->SetElementType(targetSrc, BfSourceElementType_Normal);
} }

View file

@ -2810,7 +2810,7 @@ void BfModule::SetElementType(BfAstNode* astNode, BfSourceElementType elementTyp
{ {
if ((mCompiler->mResolvePassData != NULL) && if ((mCompiler->mResolvePassData != NULL) &&
(mCompiler->mResolvePassData->mSourceClassifier != NULL) && (mCompiler->mResolvePassData->mSourceClassifier != NULL) &&
(astNode->IsFromParser( mCompiler->mResolvePassData->mParser))) (astNode->IsFromParser(mCompiler->mResolvePassData->mParser)))
{ {
mCompiler->mResolvePassData->mSourceClassifier->SetElementType(astNode, elementType); mCompiler->mResolvePassData->mSourceClassifier->SetElementType(astNode, elementType);
} }
@ -16280,7 +16280,7 @@ void BfModule::EmitDtorBody()
while (fieldDtor != NULL) 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->SetElementType(fieldDtor, BfSourceElementType_Normal);
mCompiler->mResolvePassData->mSourceClassifier->VisitChild(fieldDtor); mCompiler->mResolvePassData->mSourceClassifier->VisitChild(fieldDtor);