From 9062662ffb5960cf31a21f75e1a5696fcd7cc2a3 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Fri, 26 Aug 2022 06:26:34 -0700 Subject: [PATCH] Properly return undef const for let case in GetLiteral --- IDEHelper/Compiler/BfExprEvaluator.cpp | 2 +- IDEHelper/Compiler/BfModule.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 94c7dccd..0e382806 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -4022,7 +4022,7 @@ void BfExprEvaluator::GetLiteral(BfAstNode* refNode, const BfVariant& variant) case BfTypeCode_Let: if (mExpectingType != NULL) { - mResult = BfTypedValue(mModule->mBfIRBuilder->CreateUndefValue(mModule->mBfIRBuilder->MapType(mExpectingType)), mExpectingType); + mResult = BfTypedValue(mModule->mBfIRBuilder->GetUndefConstValue(mModule->mBfIRBuilder->MapType(mExpectingType)), mExpectingType); break; } mModule->Fail("Invalid undef literal", refNode); diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index 42410b0a..8e663f09 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -19129,6 +19129,8 @@ void BfModule::ProcessMethod_SetupParams(BfMethodInstance* methodInstance, BfTyp auto genericParamInst = unspecializedMethodInstance->mMethodInfoEx->mGenericParams[genericParamType->mGenericParamIdx]; if (genericParamInst->mTypeConstraint != NULL) { + SetAndRestoreValue prevIgnoreWrites(mBfIRBuilder->mIgnoreWrites, true); + BfExprEvaluator exprEvaluator(this); exprEvaluator.mExpectingType = genericParamInst->mTypeConstraint; exprEvaluator.GetLiteral(NULL, constExprValueType->mValue);