Skip to content

Commit a380799

Browse files
committed
[ModuleInterface] Support missing imports with the AliasModuleNames workaround
If there's a reference in API to a module that's not imported, the import is inserted automatically in the swiftinterface. This ensures the inserted import is correctly aliased in AliasModuleNames mode.
1 parent 0e40dac commit a380799

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

lib/Frontend/ModuleInterfaceSupport.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ static void printToolVersionAndFlagsComment(raw_ostream &out,
7474
ModuleDecl::ImportFilterKind::Exported,
7575
ModuleDecl::ImportFilterKind::SPIOnly,
7676
ModuleDecl::ImportFilterKind::SPIAccessControl});
77+
M->getMissingImportedModules(imports);
7778
for (ImportedModule import: imports) {
7879
StringRef importedName = import.importedModule->getNameStr();
7980
if (aliasTargets.insert(importedName).second) {

test/Sema/missing-import-inlinable-code.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@
2424
// RUN: %target-swift-emit-module-interface(%t/ClientFixed.swiftinterface) %t/clientFileA-Swift5.swift %t/clientFileB.swift -I %t
2525
// RUN: %target-swift-typecheck-module-from-interface(%t/ClientFixed.swiftinterface) -I %t
2626

27+
/// The inserted missing imports should be aliased.
28+
// RUN: %target-swift-emit-module-interface(%t/ClientFixed.swiftinterface) %t/clientFileA-Swift5.swift %t/clientFileB.swift -I %t -alias-module-names-in-module-interface
29+
// RUN: %target-swift-typecheck-module-from-interface(%t/ClientFixed.swiftinterface) -I %t
30+
// RUN: cat %t/ClientFixed.swiftinterface | %FileCheck -check-prefix ALIASED %s
31+
// ALIASED: import Module___libB
32+
2733
// REQUIRES: asserts
2834

2935
// BEGIN empty.swift

0 commit comments

Comments
 (0)