diff --git a/IDEHelper/Compiler/BfCompiler.cpp b/IDEHelper/Compiler/BfCompiler.cpp index dbd4f013..fc103e98 100644 --- a/IDEHelper/Compiler/BfCompiler.cpp +++ b/IDEHelper/Compiler/BfCompiler.cpp @@ -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); diff --git a/IDEHelper/Compiler/BfSourceClassifier.cpp b/IDEHelper/Compiler/BfSourceClassifier.cpp index 8af1eded..d8ae2613 100644 --- a/IDEHelper/Compiler/BfSourceClassifier.cpp +++ b/IDEHelper/Compiler/BfSourceClassifier.cpp @@ -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) diff --git a/IDEHelper/Compiler/BfSourceClassifier.h b/IDEHelper/Compiler/BfSourceClassifier.h index 8a8372cf..9fc596b7 100644 --- a/IDEHelper/Compiler/BfSourceClassifier.h +++ b/IDEHelper/Compiler/BfSourceClassifier.h @@ -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);