From a9872fcbac6274ad7d866d1d469ec2e2b218192a Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Wed, 3 Nov 2021 07:48:01 -0700 Subject: [PATCH] Assert fix, comptime valueless return fix --- IDEHelper/Compiler/BfModule.cpp | 10 +++++++--- IDEHelper/Compiler/CeMachine.cpp | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index ca797995..4b3ad345 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -4347,7 +4347,8 @@ BfTypedValue BfModule::GetFieldInitializerValue(BfFieldInstance* fieldInstance, { if (fieldInstance->mResolvedType->IsUndefSizedArray()) { - AssertErrorState(); + if ((!mBfIRBuilder->mIgnoreWrites) && (!mCompiler->mFastFinish)) + AssertErrorState(); } else { @@ -15141,12 +15142,15 @@ void BfModule::EmitReturn(const BfTypedValue& val) } else if (mIsComptimeModule) { - mBfIRBuilder->CreateSetRet(val.mValue, val.mType->mTypeId); + if (!val.mType->IsValuelessType()) + mBfIRBuilder->CreateSetRet(val.mValue, val.mType->mTypeId); + else + mBfIRBuilder->CreateSetRet(BfIRValue(), val.mType->mTypeId); } else { // Just ignore - BF_ASSERT(mCurMethodInstance->mReturnType->IsVar()); + BF_ASSERT(mCurMethodInstance->mReturnType->IsVar()); } } } diff --git a/IDEHelper/Compiler/CeMachine.cpp b/IDEHelper/Compiler/CeMachine.cpp index 653aef0d..30cf5fa5 100644 --- a/IDEHelper/Compiler/CeMachine.cpp +++ b/IDEHelper/Compiler/CeMachine.cpp @@ -3239,7 +3239,7 @@ void CeContext::PrepareConstStructEntry(CeConstStructData& constEntry) { if (constEntry.mHash.IsZero()) { - constEntry.mHash = Hash128(&constEntry.mData[0], constEntry.mData.mSize); + constEntry.mHash = Hash128(constEntry.mData.mVals, constEntry.mData.mSize); if (!constEntry.mFixups.IsEmpty()) constEntry.mHash = Hash128(&constEntry.mFixups[0], constEntry.mFixups.mSize * sizeof(CeConstStructFixup), constEntry.mHash); }