1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 03:28:20 +02:00

Extension classifier fix

This commit is contained in:
Brian Fiete 2020-08-31 14:16:22 -07:00
parent f008a98105
commit 95c876570f
3 changed files with 15 additions and 1 deletions

View file

@ -3894,7 +3894,7 @@ void BfCompiler::ProcessAutocompleteTempType()
};
if (tempTypeDef->mTypeCode == BfTypeCode_Extension)
{
{
BfTypeInstance* outerTypeInstance = NULL;
if (tempTypeDef->mOuterType != NULL)
@ -3928,6 +3928,9 @@ void BfCompiler::ProcessAutocompleteTempType()
return;
}
if (tempTypeDef->mTypeCode == BfTypeCode_Extension)
mResolvePassData->mSourceClassifier->SetElementType(tempTypeDef->mTypeDeclaration->mNameNode, actualTypeDef->mTypeCode);
if (tempTypeDef->mTypeDeclaration->mAttributes != NULL)
{
mResolvePassData->mSourceClassifier->VisitChild(tempTypeDef->mTypeDeclaration->mAttributes);

View file

@ -47,6 +47,16 @@ void BfSourceClassifier::SetElementType(BfAstNode* node, BfSourceElementType ele
}
}
void BfSourceClassifier::SetElementType(BfAstNode * node, BfTypeCode typeCode)
{
BfSourceElementType elemType = BfSourceElementType_Type;
if (typeCode == BfTypeCode_Interface)
elemType = BfSourceElementType_Interface;
else if (typeCode == BfTypeCode_Object)
elemType = BfSourceElementType_RefType;
SetElementType(node, elemType);
}
void BfSourceClassifier::SetHighestElementType(int startPos, int endPos, BfSourceElementType elementType)
{
if (!mEnabled)

View file

@ -73,6 +73,7 @@ public:
void ModifyFlags(BfAstNode* node, uint8 andFlags, uint8 orFlags);
void ModifyFlags(int startPos, int endPos, uint8 andFlags, uint8 orFlags);
void SetElementType(BfAstNode* node, BfSourceElementType elementType);
void SetElementType(BfAstNode* node, BfTypeCode typeCode);
void SetElementType(int startPos, int endPos, BfSourceElementType elementType);
void SetHighestElementType(BfAstNode* node, BfSourceElementType elementType);
void SetHighestElementType(int startPos, int endPos, BfSourceElementType elementType);