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);