mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Sema] Intro @_spiOnly attribute and import filter
Introduce the attribute and basic import filter logic.
This commit is contained in:
@@ -1596,6 +1596,8 @@ SourceFile::getImportedModules(SmallVectorImpl<ImportedModule> &modules,
|
||||
requiredFilter |= ModuleDecl::ImportFilterKind::Exported;
|
||||
else if (desc.options.contains(ImportFlags::ImplementationOnly))
|
||||
requiredFilter |= ModuleDecl::ImportFilterKind::ImplementationOnly;
|
||||
else if (desc.options.contains(ImportFlags::SPIOnly))
|
||||
requiredFilter |= ModuleDecl::ImportFilterKind::SPIOnly;
|
||||
else if (desc.options.contains(ImportFlags::SPIAccessControl))
|
||||
requiredFilter |= ModuleDecl::ImportFilterKind::SPIAccessControl;
|
||||
else
|
||||
@@ -1904,6 +1906,7 @@ SourceFile::collectLinkLibraries(ModuleDecl::LinkLibraryCallback callback) const
|
||||
|
||||
ModuleDecl::ImportFilter topLevelFilter = filter;
|
||||
topLevelFilter |= ModuleDecl::ImportFilterKind::ImplementationOnly;
|
||||
topLevelFilter |= ModuleDecl::ImportFilterKind::SPIOnly;
|
||||
topLevel->getImportedModules(stack, topLevelFilter);
|
||||
|
||||
// Make sure the top-level module is first; we want pre-order-ish traversal.
|
||||
@@ -2600,6 +2603,7 @@ canBeUsedForCrossModuleOptimization(DeclContext *ctxt) const {
|
||||
// @_implementationOnly or @_spi.
|
||||
ModuleDecl::ImportFilter filter = {
|
||||
ModuleDecl::ImportFilterKind::ImplementationOnly,
|
||||
ModuleDecl::ImportFilterKind::SPIOnly,
|
||||
ModuleDecl::ImportFilterKind::SPIAccessControl
|
||||
};
|
||||
SmallVector<ImportedModule, 4> results;
|
||||
|
||||
Reference in New Issue
Block a user