1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 03:52:19 +02:00

Fixed field initialization in structs with extensions

This commit is contained in:
Brian Fiete 2020-10-23 09:03:19 -07:00
parent 8be5d70c27
commit 994640df11

View file

@ -15556,7 +15556,7 @@ void BfModule::EmitCtorBody(bool& skipBody)
calledCtorNoBody = true;
}
}
}
}
// Initialize fields (if applicable)
@ -15568,7 +15568,7 @@ void BfModule::EmitCtorBody(bool& skipBody)
{
// Field initializers occur in CtorNoBody methods for extensions
}
else if ((!hadThisInitializer) && (!calledCtorNoBody))
else if (!hadThisInitializer)
{
// If we had a 'this' initializer, that other ctor will have initialized our fields
@ -15578,6 +15578,10 @@ void BfModule::EmitCtorBody(bool& skipBody)
(mCompiler->mResolvePassData->mAutoComplete == NULL) ||
(mCompiler->mResolvePassData->mAutoComplete->mResolveType == BfResolveType_ShowFileSymbolReferences))
{
// If we calledCtorNoBody then we did the field initializer code, but we still need to run though it here
// to properly set the assigned flags
SetAndRestoreValue<bool> prevIgnoreWrites(mBfIRBuilder->mIgnoreWrites, mBfIRBuilder->mIgnoreWrites || calledCtorNoBody);
bool hadInlineInitBlock = false;
BfScopeData scopeData;