mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Fixed const-eval-initialized const field dependency issues
This commit is contained in:
parent
1893988195
commit
496eae24ad
5 changed files with 85 additions and 29 deletions
|
@ -1246,6 +1246,35 @@ void BfContext::TypeConstEvalChanged(BfTypeInstance* typeInst)
|
|||
TypeConstEvalChanged(depTypeInst);
|
||||
RebuildType(dependentType);
|
||||
}
|
||||
else if ((dependencyFlags & BfDependencyMap::DependencyFlag_ConstEvalConstField) != 0)
|
||||
{
|
||||
auto depTypeInst = dependentType->ToTypeInstance();
|
||||
if (depTypeInst != NULL)
|
||||
TypeConstEvalFieldChanged(depTypeInst);
|
||||
RebuildType(dependentType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void BfContext::TypeConstEvalFieldChanged(BfTypeInstance* typeInst)
|
||||
{
|
||||
if (typeInst->mRebuildFlags & BfTypeRebuildFlag_ConstEvalFieldChange) // Already did change?
|
||||
return;
|
||||
typeInst->mRebuildFlags = (BfTypeRebuildFlags)(typeInst->mRebuildFlags | BfTypeRebuildFlag_ConstEvalFieldChange);
|
||||
|
||||
// These don't happen in TypeDataChanged because we don't need to cascade
|
||||
for (auto& depItr : typeInst->mDependencyMap)
|
||||
{
|
||||
auto dependentType = depItr.mKey;
|
||||
auto dependencyFlags = depItr.mValue.mFlags;
|
||||
|
||||
if ((dependencyFlags & BfDependencyMap::DependencyFlag_ConstEvalConstField) != 0)
|
||||
{
|
||||
auto depTypeInst = dependentType->ToTypeInstance();
|
||||
if (depTypeInst != NULL)
|
||||
TypeConstEvalFieldChanged(depTypeInst);
|
||||
RebuildType(dependentType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue