Kaynağa Gözat

Fixed colorization of unqualified property access (ie: implicit 'this')

Brian Fiete 7 ay önce
ebeveyn
işleme
dfdbe7440f

+ 3 - 3
IDEHelper/Compiler/BfExprEvaluator.cpp

@@ -4770,7 +4770,7 @@ BfTypedValue BfExprEvaluator::LookupIdentifier(BfAstNode* refNode, const StringI
 				result = LookupField(identifierNode, thisValue, findName);
 				if ((result) || (mPropDef != NULL))
 				{
-					mModule->SetElementType(identifierNode, BfSourceElementType_Member);
+					mModule->SetHighestElementType(identifierNode, BfSourceElementType_Member);
 					return result;
 				}
 			}
@@ -4785,7 +4785,7 @@ BfTypedValue BfExprEvaluator::LookupIdentifier(BfAstNode* refNode, const StringI
 				result = LookupField(identifierNode, thisValue, findName);
 				if ((result) || (mPropDef != NULL))
 				{
-					mModule->SetElementType(identifierNode, BfSourceElementType_Member);
+					mModule->SetHighestElementType(identifierNode, BfSourceElementType_Member);
 					return result;
 				}
 			}
@@ -4793,7 +4793,7 @@ BfTypedValue BfExprEvaluator::LookupIdentifier(BfAstNode* refNode, const StringI
 	}
 	else
 	{
-		mModule->SetElementType(identifierNode, BfSourceElementType_Member);
+		mModule->SetHighestElementType(identifierNode, BfSourceElementType_Member);
 	}
 
 	if ((!result) && (identifierNode != NULL))

+ 9 - 0
IDEHelper/Compiler/BfModule.cpp

@@ -3031,6 +3031,15 @@ void BfModule::SetElementType(BfAstNode* astNode, BfSourceElementType elementTyp
 	}
 }
 
+void BfModule::SetHighestElementType(BfAstNode* astNode, BfSourceElementType elementType)
+{
+	if (mCompiler->mResolvePassData != NULL)
+	{
+		if (auto sourceClassifier = mCompiler->mResolvePassData->GetSourceClassifier(astNode))
+			sourceClassifier->SetHighestElementType(astNode, elementType);
+	}
+}
+
 bool BfModule::PreFail()
 {
 	if (!mIgnoreErrors)

+ 1 - 0
IDEHelper/Compiler/BfModule.h

@@ -1624,6 +1624,7 @@ public:
 	void GetAccessAllowed(BfTypeInstance* checkType, bool& allowProtected, bool& allowPrivate);
 	bool CheckProtection(BfProtectionCheckFlags& flags, BfTypeInstance* memberOwner, BfProject* memberProject, BfProtection memberProtection, BfTypeInstance* lookupStartType);
 	void SetElementType(BfAstNode* astNode, BfSourceElementType elementType);
+	void SetHighestElementType(BfAstNode* astNode, BfSourceElementType elementType);
 	bool PreFail();
 	void SetFail();
 	void VerifyOnDemandMethods();