mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-09 03:52:19 +02:00
Made global composite typedefs no longer split per-project
This commit is contained in:
parent
8a5b674216
commit
328f489324
1 changed files with 24 additions and 13 deletions
|
@ -3031,7 +3031,7 @@ void BfCompiler::UpdateRevisedTypes()
|
||||||
}
|
}
|
||||||
else if ((outerTypeDef->mIsExplicitPartial) && (!outerTypeDef->mPartialUsed))
|
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;
|
rootTypeDef = outerTypeDef;
|
||||||
rootTypeDefEntry = outerTypeDefEntry;
|
rootTypeDefEntry = outerTypeDefEntry;
|
||||||
|
|
||||||
|
@ -3040,13 +3040,28 @@ void BfCompiler::UpdateRevisedTypes()
|
||||||
while (checkTypeDefEntry != NULL)
|
while (checkTypeDefEntry != NULL)
|
||||||
{
|
{
|
||||||
auto checkTypeDef = checkTypeDefEntry->mValue;
|
auto checkTypeDef = checkTypeDefEntry->mValue;
|
||||||
|
|
||||||
if ((checkTypeDefEntry->mHash != outerTypeDefEntry->mHash) ||
|
if ((checkTypeDefEntry->mHash != outerTypeDefEntry->mHash) ||
|
||||||
(!checkTypeDef->mIsCombinedPartial) ||
|
|
||||||
(checkTypeDef->mPartialUsed) ||
|
(checkTypeDef->mPartialUsed) ||
|
||||||
(checkTypeDef->mDefState == BfTypeDef::DefState_Deleted) ||
|
(checkTypeDef->mDefState == BfTypeDef::DefState_Deleted) ||
|
||||||
(!checkTypeDef->NameEquals(outerTypeDef)) ||
|
(!checkTypeDef->NameEquals(outerTypeDef)) ||
|
||||||
(checkTypeDef->mGenericParamDefs.size() != outerTypeDef->mGenericParamDefs.size()) ||
|
(checkTypeDef->mGenericParamDefs.size() != outerTypeDef->mGenericParamDefs.size()))
|
||||||
(outerTypeDef->mProject != checkTypeDef->mProject))
|
{
|
||||||
|
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;
|
checkTypeDefEntry = checkTypeDefEntry->mNext;
|
||||||
continue;
|
continue;
|
||||||
|
@ -3141,11 +3156,7 @@ void BfCompiler::UpdateRevisedTypes()
|
||||||
{
|
{
|
||||||
auto checkTypeDef = checkTypeDefEntry->mValue;
|
auto checkTypeDef = checkTypeDefEntry->mValue;
|
||||||
|
|
||||||
bool isValidProject;
|
bool isValidProject = checkTypeDef->mProject->ContainsReference(rootTypeDef->mProject);
|
||||||
if (rootTypeDef->mIsExplicitPartial)
|
|
||||||
isValidProject = rootTypeDef->mProject == checkTypeDef->mProject;
|
|
||||||
else
|
|
||||||
isValidProject = checkTypeDef->mProject->ContainsReference(rootTypeDef->mProject);
|
|
||||||
|
|
||||||
if (checkTypeDef != rootTypeDef)
|
if (checkTypeDef != rootTypeDef)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue