1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 19:48:20 +02:00

Made global composite typedefs no longer split per-project

This commit is contained in:
Brian Fiete 2020-07-16 08:04:25 -07:00
parent 8a5b674216
commit 328f489324

View file

@ -3031,7 +3031,7 @@ void BfCompiler::UpdateRevisedTypes()
}
else if ((outerTypeDef->mIsExplicitPartial) && (!outerTypeDef->mPartialUsed))
{
// For explicit partials there is no 'root type' so we just use the first explicit partial
// For explicit partials there is no 'root type' so we want to select any partial in the 'innermost' project
rootTypeDef = outerTypeDef;
rootTypeDefEntry = outerTypeDefEntry;
@ -3040,13 +3040,28 @@ void BfCompiler::UpdateRevisedTypes()
while (checkTypeDefEntry != NULL)
{
auto checkTypeDef = checkTypeDefEntry->mValue;
if ((checkTypeDefEntry->mHash != outerTypeDefEntry->mHash) ||
(!checkTypeDef->mIsCombinedPartial) ||
(checkTypeDef->mPartialUsed) ||
(checkTypeDef->mDefState == BfTypeDef::DefState_Deleted) ||
(!checkTypeDef->NameEquals(outerTypeDef)) ||
(checkTypeDef->mGenericParamDefs.size() != outerTypeDef->mGenericParamDefs.size()) ||
(outerTypeDef->mProject != checkTypeDef->mProject))
(checkTypeDef->mGenericParamDefs.size() != outerTypeDef->mGenericParamDefs.size()))
{
checkTypeDefEntry = checkTypeDefEntry->mNext;
continue;
}
if (!checkTypeDef->mIsCombinedPartial)
{
// Select the innermost project for the composite project def
if ((rootTypeDef->mProject != checkTypeDef->mProject) && (rootTypeDef->mProject->ContainsReference(checkTypeDef->mProject)))
rootTypeDef = checkTypeDef;
checkTypeDefEntry = checkTypeDefEntry->mNext;
continue;
}
if (checkTypeDef->mProject != rootTypeDef->mProject)
{
checkTypeDefEntry = checkTypeDefEntry->mNext;
continue;
@ -3141,11 +3156,7 @@ void BfCompiler::UpdateRevisedTypes()
{
auto checkTypeDef = checkTypeDefEntry->mValue;
bool isValidProject;
if (rootTypeDef->mIsExplicitPartial)
isValidProject = rootTypeDef->mProject == checkTypeDef->mProject;
else
isValidProject = checkTypeDef->mProject->ContainsReference(rootTypeDef->mProject);
bool isValidProject = checkTypeDef->mProject->ContainsReference(rootTypeDef->mProject);
if (checkTypeDef != rootTypeDef)
{