From 27a792e559860f5813ca42bfe717b1a1b9aa9ed6 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 22 Jan 2022 07:01:57 -0500 Subject: [PATCH] Fixed IsVar check --- IDEHelper/Compiler/BfExprEvaluator.cpp | 6 +++--- IDEHelper/Compiler/BfExprEvaluator.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 944fa9a2..217be93d 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -3616,11 +3616,11 @@ static bool IsCharType(BfTypeCode typeCode) } } -bool BfExprEvaluator::IsVar(BfType* type) +bool BfExprEvaluator::IsVar(BfType* type, bool forceIgnoreWrites) { if (type->IsVar()) return true; - if ((type->IsGenericParam()) && (!mModule->mBfIRBuilder->mIgnoreWrites)) + if ((type->IsGenericParam()) && (!forceIgnoreWrites) && (!mModule->mBfIRBuilder->mIgnoreWrites)) { BF_ASSERT(mModule->mIsComptimeModule); return true; @@ -4429,7 +4429,7 @@ BfTypedValue BfExprEvaluator::LookupField(BfAstNode* targetSrc, BfTypedValue tar } } - if ((target.mType != NULL) && (IsVar(target.mType))) + if ((target.mType != NULL) && (IsVar(target.mType, (flags & BfLookupFieldFlag_BindOnly) != 0))) return BfTypedValue(mModule->GetDefaultValue(target.mType), target.mType, true); BfTypeInstance* startCheckType = mModule->mCurTypeInstance; diff --git a/IDEHelper/Compiler/BfExprEvaluator.h b/IDEHelper/Compiler/BfExprEvaluator.h index e4829470..1100f440 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.h +++ b/IDEHelper/Compiler/BfExprEvaluator.h @@ -404,7 +404,7 @@ public: BfExprEvaluator(BfModule* module); ~BfExprEvaluator(); - bool IsVar(BfType* type); + bool IsVar(BfType* type, bool forceIgnoreWrites = false); void GetLiteral(BfAstNode* refNode, const BfVariant& variant); void FinishExpressionResult(); virtual bool CheckAllowValue(const BfTypedValue& typedValue, BfAstNode* refNode);