mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Fixed dependency issue with pointer to struct as generic arg
This commit is contained in:
parent
26205eefcd
commit
807d8eba7e
1 changed files with 8 additions and 4 deletions
|
@ -3089,9 +3089,13 @@ void BfModule::AddDependency(BfType* usedType, BfType* userType, BfDependencyMap
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto depFlag = flags;
|
||||||
|
if ((flags & (BfDependencyMap::DependencyFlag_MethodGenericArg | BfDependencyMap::DependencyFlag_TypeGenericArg)) == 0)
|
||||||
|
depFlag = BfDependencyMap::DependencyFlag_GenericArgRef; // Will cause a rebuild but not an outright deletion of the type
|
||||||
|
|
||||||
auto underlyingType = usedType->GetUnderlyingType();
|
auto underlyingType = usedType->GetUnderlyingType();
|
||||||
if (underlyingType != NULL) // Not really a "GenericArg", but... same purpose.
|
if (underlyingType != NULL)
|
||||||
AddDependency(underlyingType, userType, BfDependencyMap::DependencyFlag_GenericArgRef);
|
AddDependency(underlyingType, userType, depFlag);
|
||||||
|
|
||||||
BfDependedType* checkDType = usedType->ToDependedType();
|
BfDependedType* checkDType = usedType->ToDependedType();
|
||||||
if (checkDType == NULL)
|
if (checkDType == NULL)
|
||||||
|
@ -3107,7 +3111,7 @@ void BfModule::AddDependency(BfType* usedType, BfType* userType, BfDependencyMap
|
||||||
auto genericTypeInstance = (BfTypeInstance*) checkDType;
|
auto genericTypeInstance = (BfTypeInstance*) checkDType;
|
||||||
for (auto genericArg : genericTypeInstance->mGenericTypeInfo->mTypeGenericArguments)
|
for (auto genericArg : genericTypeInstance->mGenericTypeInfo->mTypeGenericArguments)
|
||||||
{
|
{
|
||||||
AddDependency(genericArg, userType, BfDependencyMap::DependencyFlag_GenericArgRef);
|
AddDependency(genericArg, userType, depFlag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (checkDType->IsTuple())
|
if (checkDType->IsTuple())
|
||||||
|
@ -3115,7 +3119,7 @@ void BfModule::AddDependency(BfType* usedType, BfType* userType, BfDependencyMap
|
||||||
for (auto& field : checkDType->ToTypeInstance()->mFieldInstances)
|
for (auto& field : checkDType->ToTypeInstance()->mFieldInstances)
|
||||||
{
|
{
|
||||||
if (field.mDataIdx != -1)
|
if (field.mDataIdx != -1)
|
||||||
AddDependency(field.mResolvedType, userType, BfDependencyMap::DependencyFlag_GenericArgRef);
|
AddDependency(field.mResolvedType, userType, depFlag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue