@@ -1902,8 +1902,10 @@ SourceFile::getImportedModules(SmallVectorImpl<ImportedModule> &modules,
19021902 if (desc.options .contains (ImportFlags::Exported))
19031903 requiredFilter |= ModuleDecl::ImportFilterKind::Exported;
19041904 else if (desc.options .contains (ImportFlags::ImplementationOnly) ||
1905- (desc.accessLevel <= AccessLevel::Package && moduleIsResilient))
1905+ (desc.accessLevel <= AccessLevel::Internal && moduleIsResilient))
19061906 requiredFilter |= ModuleDecl::ImportFilterKind::ImplementationOnly;
1907+ else if (desc.accessLevel <= AccessLevel::Package && moduleIsResilient)
1908+ requiredFilter |= ModuleDecl::ImportFilterKind::PackageOnly;
19071909 else if (desc.options .contains (ImportFlags::SPIOnly))
19081910 requiredFilter |= ModuleDecl::ImportFilterKind::SPIOnly;
19091911 else
@@ -2275,6 +2277,7 @@ SourceFile::collectLinkLibraries(ModuleDecl::LinkLibraryCallback callback) const
22752277
22762278 ModuleDecl::ImportFilter topLevelFilter = filter;
22772279 topLevelFilter |= ModuleDecl::ImportFilterKind::ImplementationOnly;
2280+ topLevelFilter |= ModuleDecl::ImportFilterKind::PackageOnly,
22782281 topLevelFilter |= ModuleDecl::ImportFilterKind::SPIOnly;
22792282 topLevel->getImportedModules (stack, topLevelFilter);
22802283
@@ -2982,6 +2985,8 @@ bool ModuleDecl::isImportedImplementationOnly(const ModuleDecl *module) const {
29822985 ModuleDecl::ImportFilter filter = {
29832986 ModuleDecl::ImportFilterKind::Exported,
29842987 ModuleDecl::ImportFilterKind::Default,
2988+ ModuleDecl::ImportFilterKind::PackageOnly,
2989+ ModuleDecl::ImportFilterKind::SPIOnly,
29852990 ModuleDecl::ImportFilterKind::ShadowedByCrossImportOverlay};
29862991 SmallVector<ImportedModule, 4 > results;
29872992 getImportedModules (results, filter);
@@ -3004,9 +3009,10 @@ canBeUsedForCrossModuleOptimization(DeclContext *ctxt) const {
30043009 return true ;
30053010
30063011 // See if context is imported in a "regular" way, i.e. not with
3007- // @_implementationOnly or @_spi .
3012+ // @_implementationOnly, `package import` or @_spiOnly .
30083013 ModuleDecl::ImportFilter filter = {
30093014 ModuleDecl::ImportFilterKind::ImplementationOnly,
3015+ ModuleDecl::ImportFilterKind::PackageOnly,
30103016 ModuleDecl::ImportFilterKind::SPIOnly
30113017 };
30123018 SmallVector<ImportedModule, 4 > results;
0 commit comments