From a4a5d99fd011a157f2b81d66df089e4bc4a731f7 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 15 Jan 2022 09:35:56 -0500 Subject: [PATCH] Fixed static search for method params (fixes `int[SIZE]` resolution) --- IDEHelper/Compiler/BfModule.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/IDEHelper/Compiler/BfModule.cpp b/IDEHelper/Compiler/BfModule.cpp index 71c80f5d..413549cb 100644 --- a/IDEHelper/Compiler/BfModule.cpp +++ b/IDEHelper/Compiler/BfModule.cpp @@ -17192,9 +17192,12 @@ void BfModule::EmitCtorBody(bool& skipBody) auto localVal = exprEvaluator.LoadLocal(localVar); localVal = LoadOrAggregateValue(localVal); - auto thisVal = GetThis(); - auto fieldPtr = mBfIRBuilder->CreateInBoundsGEP(thisVal.mValue, 0, fieldInstance.mDataIdx); - mBfIRBuilder->CreateAlignedStore(localVal.mValue, fieldPtr, localVar->mResolvedType->mAlign); + if (!localVal.mType->IsVar()) + { + auto thisVal = GetThis(); + auto fieldPtr = mBfIRBuilder->CreateInBoundsGEP(thisVal.mValue, 0, fieldInstance.mDataIdx); + mBfIRBuilder->CreateAlignedStore(localVal.mValue, fieldPtr, localVar->mResolvedType->mAlign); + } MarkFieldInitialized(&fieldInstance); } } @@ -22049,6 +22052,8 @@ void BfModule::DoMethodDeclaration(BfMethodDeclaration* methodDeclaration, bool SetAndRestoreValue prevIgnoreWrites(mBfIRBuilder->mIgnoreWrites, mWantsIRIgnoreWrites || mCurMethodInstance->mIsUnspecialized || mCurTypeInstance->mResolvingVarField); SetAndRestoreValue prevIsCapturingMethodMatchInfo; SetAndRestoreValue prevAllowLockYield(mContext->mAllowLockYield, false); + BfTypeState typeState(mCurTypeInstance); + SetAndRestoreValue prevTypeState(mContext->mCurTypeState, &typeState); if (mCompiler->IsAutocomplete()) prevIsCapturingMethodMatchInfo.Init(mCompiler->mResolvePassData->mAutoComplete->mIsCapturingMethodMatchInfo, false);