From 1dc1ec24a0ffcac868c0b1f9af35e911c976ebea Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Thu, 13 Aug 2020 16:19:22 -0700 Subject: [PATCH] Properly check for IsMemberAccessible for operators --- IDEHelper/Compiler/BfExprEvaluator.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 4ea42506..f072f7c0 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -213,11 +213,13 @@ bool BfMethodMatcher::IsMemberAccessible(BfTypeInstance* typeInst, BfTypeDef* de if (mActiveTypeDef == NULL) mActiveTypeDef = mModule->GetActiveTypeDef(); + // This needs to be outside the `IsInSpecializedSection`. Note that mActiveTypeDef does not pose a constraint here + if (!typeInst->IsTypeMemberIncluded(declaringType, mActiveTypeDef, mModule)) + return false; + // This may not be completely correct - BUT if we don't have this then even Dictionary TKey's operator == won't be considered accessible if ((!mModule->IsInSpecializedSection()) && (mActiveTypeDef->mTypeDeclaration != NULL)) - { - if (!typeInst->IsTypeMemberIncluded(declaringType, mActiveTypeDef, mModule)) - return false; + { if (!typeInst->IsTypeMemberAccessible(declaringType, mActiveTypeDef)) return false; }