Merge pull request #64522 from xymus/access-level-import-testable

[Serialization] Load non-public dependencies of modules when testing is enabled
This commit is contained in:
Alexis Laferrière
2023-03-22 12:54:39 -07:00
committed by GitHub
10 changed files with 96 additions and 22 deletions

View File

@@ -2118,16 +2118,15 @@ SourceFile::getImportedModules(SmallVectorImpl<ImportedModule> &modules,
if (!Imports)
return;
bool moduleIsResilient = getParentModule()->getResilienceStrategy() ==
ResilienceStrategy::Resilient;
for (auto desc : *Imports) {
ModuleDecl::ImportFilter requiredFilter;
if (desc.options.contains(ImportFlags::Exported))
requiredFilter |= ModuleDecl::ImportFilterKind::Exported;
else if (desc.options.contains(ImportFlags::ImplementationOnly) ||
(desc.accessLevel <= AccessLevel::Internal && moduleIsResilient))
else if (desc.options.contains(ImportFlags::ImplementationOnly))
requiredFilter |= ModuleDecl::ImportFilterKind::ImplementationOnly;
else if (desc.accessLevel <= AccessLevel::Package && moduleIsResilient)
else if (desc.accessLevel <= AccessLevel::Internal)
requiredFilter |= ModuleDecl::ImportFilterKind::InternalOrBelow;
else if (desc.accessLevel <= AccessLevel::Package)
requiredFilter |= ModuleDecl::ImportFilterKind::PackageOnly;
else if (desc.options.contains(ImportFlags::SPIOnly))
requiredFilter |= ModuleDecl::ImportFilterKind::SPIOnly;
@@ -2483,6 +2482,7 @@ SourceFile::collectLinkLibraries(ModuleDecl::LinkLibraryCallback callback) const
ModuleDecl::ImportFilter topLevelFilter = filter;
topLevelFilter |= ModuleDecl::ImportFilterKind::ImplementationOnly;
topLevelFilter |= ModuleDecl::ImportFilterKind::InternalOrBelow;
topLevelFilter |= ModuleDecl::ImportFilterKind::PackageOnly,
topLevelFilter |= ModuleDecl::ImportFilterKind::SPIOnly;
topLevel->getImportedModules(stack, topLevelFilter);