Browse Source

Extension classifier fix

Brian Fiete 5 years ago
parent
commit
95c876570f

+ 4 - 1
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);

+ 10 - 0
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)

+ 1 - 0
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);