mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 19:48:20 +02:00
Default ctor fix with emitted ctors
This commit is contained in:
parent
049118bb32
commit
82c1125a68
4 changed files with 50 additions and 2 deletions
|
@ -6238,9 +6238,20 @@ void BfModule::DoTypeInstanceMethodProcessing(BfTypeInstance* typeInstance)
|
|||
if (typeInstance->mTypeOptionsIdx >= 0)
|
||||
typeOptions = mSystem->GetTypeOptions(typeInstance->mTypeOptionsIdx);
|
||||
|
||||
BfMethodDef* defaultCtor = NULL;
|
||||
bool hasExplicitCtors = false;
|
||||
|
||||
// Generate all methods. Pass 0
|
||||
for (auto methodDef : typeDef->mMethods)
|
||||
{
|
||||
if (methodDef->mMethodType == BfMethodType_Ctor)
|
||||
{
|
||||
if (methodDef->mMethodDeclaration == NULL)
|
||||
defaultCtor = methodDef;
|
||||
else
|
||||
hasExplicitCtors = true;
|
||||
}
|
||||
|
||||
auto methodInstanceGroup = &typeInstance->mMethodInstanceGroups[methodDef->mIdx];
|
||||
|
||||
// Don't set these pointers during resolve pass because they may become invalid if it's just a temporary autocomplete method
|
||||
|
@ -6272,6 +6283,12 @@ void BfModule::DoTypeInstanceMethodProcessing(BfTypeInstance* typeInstance)
|
|||
//BF_ASSERT((methodInstanceGroup->mOnDemandKind == BfMethodOnDemandKind_NotSet) || (methodInstanceGroup->mOnDemandKind == BfMethodOnDemandKind_AlwaysInclude));
|
||||
}
|
||||
|
||||
if ((defaultCtor != NULL) && (hasExplicitCtors))
|
||||
{
|
||||
// This can happen if we emit another ctor
|
||||
defaultCtor->mProtection = BfProtection_Hidden;
|
||||
}
|
||||
|
||||
if (typeInstance == mContext->mBfObjectType)
|
||||
{
|
||||
BF_ASSERT(typeInstance->mInterfaceMethodTable.size() == 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue