mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Emit module selectors in swiftinterfaces
This support is currently opt-in and can be disabled by a blocklist.
This commit is contained in:
@@ -884,13 +884,22 @@ bool swift::emitSwiftInterface(raw_ostream &out,
|
||||
|
||||
printImports(out, Opts, M, aliasModuleNamesTargets);
|
||||
|
||||
bool useExportedModuleNames = Opts.printPublicInterface();
|
||||
// Apply module selector blocklist.
|
||||
bool useModuleSelectors = Opts.UseModuleSelectors;
|
||||
if (useModuleSelectors && M->getASTContext().blockListConfig
|
||||
.hasBlockListAction(M->getNameStr(), BlockListKeyKind::ModuleName,
|
||||
BlockListAction::
|
||||
DisableModuleSelectorsInModuleInterface))
|
||||
useModuleSelectors = false;
|
||||
|
||||
bool useExportedModuleNames = Opts.printPublicInterface();
|
||||
const PrintOptions printOptions = PrintOptions::printSwiftInterfaceFile(
|
||||
M, Opts.PreserveTypesAsWritten, Opts.PrintFullConvention,
|
||||
M, useModuleSelectors, Opts.PreserveTypesAsWritten,
|
||||
Opts.PrintFullConvention,
|
||||
Opts.InterfaceContentMode,
|
||||
useExportedModuleNames,
|
||||
Opts.AliasModuleNames, &aliasModuleNamesTargets);
|
||||
|
||||
InheritedProtocolCollector::PerTypeMap inheritedProtocolMap;
|
||||
|
||||
SmallVector<Decl *, 16> topLevelDecls;
|
||||
@@ -909,7 +918,8 @@ bool swift::emitSwiftInterface(raw_ostream &out,
|
||||
D->print(out, printOptions);
|
||||
out << "\n";
|
||||
|
||||
diagnoseIfDeclShadowsKnownModule(Opts, const_cast<Decl *>(D), M);
|
||||
if (!useModuleSelectors)
|
||||
diagnoseIfDeclShadowsKnownModule(Opts, const_cast<Decl *>(D), M);
|
||||
}
|
||||
|
||||
// Print dummy extensions for any protocols that were indirectly conformed to.
|
||||
|
||||
Reference in New Issue
Block a user