Skip to content

Commit 8ff9ef8

Browse files
committed
Fixes package import stmt missing from .package.swiftinterface.
Resolves rdar://124309585
1 parent d3ed4a4 commit 8ff9ef8

File tree

2 files changed

+36
-4
lines changed

2 files changed

+36
-4
lines changed

lib/Frontend/ModuleInterfaceSupport.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,14 @@ static void printImports(raw_ostream &out,
286286
allImportFilter |= ModuleDecl::ImportFilterKind::SPIOnly;
287287
}
288288

289+
llvm::SmallSet<ImportedModule, 8, ImportedModule::Order> packageOnlyImportSet;
290+
if (!Opts.printPublicInterface() && Opts.printPackageInterface()) {
291+
SmallVector<ImportedModule, 8> packageOnlyImports;
292+
M->getImportedModules(packageOnlyImports, ModuleDecl::ImportFilterKind::PackageOnly);
293+
packageOnlyImportSet.insert(packageOnlyImports.begin(), packageOnlyImports.end());
294+
allImportFilter |= ModuleDecl::ImportFilterKind::PackageOnly;
295+
}
296+
289297
SmallVector<ImportedModule, 8> allImports;
290298
M->getImportedModules(allImports, allImportFilter);
291299

@@ -351,7 +359,11 @@ static void printImports(raw_ostream &out,
351359
out << "@_spi(" << spiName << ") ";
352360
}
353361

354-
if (ctx.LangOpts.hasFeature(Feature::InternalImportsByDefault)) {
362+
if (!Opts.printPublicInterface() &&
363+
Opts.printPackageInterface() &&
364+
packageOnlyImportSet.count(import))
365+
out << "package ";
366+
else if (ctx.LangOpts.hasFeature(Feature::InternalImportsByDefault)) {
355367
out << "public ";
356368
}
357369

test/ModuleInterface/access-level-import-swiftinterfaces.swift

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,57 +22,73 @@
2222
// RUN: -package-name TestPackage \
2323
// RUN: -enable-library-evolution -swift-version 5 \
2424
// RUN: -emit-module-interface-path %t/Client.swiftinterface \
25-
// RUN: -emit-private-module-interface-path %t/Client.private.swiftinterface
25+
// RUN: -emit-private-module-interface-path %t/Client.private.swiftinterface \
26+
// RUN: -emit-package-module-interface-path %t/Client.package.swiftinterface
2627

2728
// RUN: %target-swift-typecheck-module-from-interface(%t/Client.swiftinterface) -I %t
2829
// RUN: %target-swift-typecheck-module-from-interface(%t/Client.private.swiftinterface) -I %t \
2930
// RUN: -module-name Client
31+
// RUN: %target-swift-typecheck-module-from-interface(%t/Client.package.swiftinterface) -I %t \
32+
// RUN: -module-name Client
3033

3134
// RUN: %FileCheck --check-prefixes=CHECK,CHECK-5 %s < %t/Client.swiftinterface
3235
// RUN: %FileCheck --check-prefixes=CHECK,CHECK-5 %s < %t/Client.private.swiftinterface
36+
// RUN: %FileCheck --check-prefixes=CHECK,CHECK-5,CHECK-5-PKG %s < %t/Client.package.swiftinterface
3337

3438
/// Build a client composed of many files.
3539
// RUN: %target-swift-frontend -typecheck %t/MultiFiles?.swift -I %t \
3640
// RUN: -package-name TestPackage \
3741
// RUN: -enable-library-evolution -swift-version 5 \
3842
// RUN: -emit-module-interface-path %t/MultiFiles.swiftinterface \
39-
// RUN: -emit-private-module-interface-path %t/MultiFiles.private.swiftinterface
43+
// RUN: -emit-private-module-interface-path %t/MultiFiles.private.swiftinterface \
44+
// RUN: -emit-package-module-interface-path %t/MultiFiles.package.swiftinterface
4045

4146
// RUN: %target-swift-typecheck-module-from-interface(%t/MultiFiles.swiftinterface) -I %t
4247
// RUN: %target-swift-typecheck-module-from-interface(%t/MultiFiles.private.swiftinterface) -I %t \
4348
// RUN: -module-name MultiFiles
49+
// RUN: %target-swift-typecheck-module-from-interface(%t/MultiFiles.package.swiftinterface) -I %t \
50+
// RUN: -module-name MultiFiles
4451

4552
// RUN: %FileCheck --check-prefixes=CHECK,CHECK-5 %s < %t/MultiFiles.swiftinterface
4653
// RUN: %FileCheck --check-prefixes=CHECK,CHECK-5 %s < %t/MultiFiles.private.swiftinterface
54+
// RUN: %FileCheck --check-prefixes=CHECK,CHECK-5-PKG %s < %t/MultiFiles.package.swiftinterface
4755

4856
/// Swift 6 mode.
4957
// RUN: %target-swift-frontend -typecheck %t/Client.swift -I %t \
5058
// RUN: -package-name TestPackage -module-name Client_Swift6 \
5159
// RUN: -enable-library-evolution -swift-version 6 \
5260
// RUN: -emit-module-interface-path %t/Client_Swift6.swiftinterface \
53-
// RUN: -emit-private-module-interface-path %t/Client_Swift6.private.swiftinterface
61+
// RUN: -emit-private-module-interface-path %t/Client_Swift6.private.swiftinterface \
62+
// RUN: -emit-package-module-interface-path %t/Client_Swift6.package.swiftinterface
5463

5564
// RUN: %target-swift-typecheck-module-from-interface(%t/Client_Swift6.swiftinterface) -I %t
5665
// RUN: %target-swift-typecheck-module-from-interface(%t/Client_Swift6.private.swiftinterface) -I %t \
5766
// RUN: -module-name Client_Swift6
67+
// RUN: %target-swift-typecheck-module-from-interface(%t/Client_Swift6.package.swiftinterface) -I %t \
68+
// RUN: -module-name Client_Swift6
5869

5970
// RUN: %FileCheck %s --check-prefixes=CHECK,CHECK-6 < %t/Client_Swift6.swiftinterface
6071
// RUN: %FileCheck %s --check-prefixes=CHECK,CHECK-6 < %t/Client_Swift6.private.swiftinterface
72+
// RUN: %FileCheck %s --check-prefixes=CHECK,CHECK-6,CHECK-6-PKG < %t/Client_Swift6.package.swiftinterface
6173

6274
/// Feature flag.
6375
// RUN: %target-swift-frontend -typecheck %t/Client.swift -I %t \
6476
// RUN: -package-name TestPackage -module-name Client_FeatureFlag \
6577
// RUN: -enable-library-evolution -swift-version 5 \
6678
// RUN: -emit-module-interface-path %t/Client_FeatureFlag.swiftinterface \
6779
// RUN: -emit-private-module-interface-path %t/Client_FeatureFlag.private.swiftinterface \
80+
// RUN: -emit-package-module-interface-path %t/Client_FeatureFlag.package.swiftinterface \
6881
// RUN: -enable-upcoming-feature InternalImportsByDefault
6982

7083
// RUN: %target-swift-typecheck-module-from-interface(%t/Client_FeatureFlag.swiftinterface) -I %t
7184
// RUN: %target-swift-typecheck-module-from-interface(%t/Client_FeatureFlag.private.swiftinterface) -I %t \
7285
// RUN: -module-name Client_FeatureFlag
86+
// RUN: %target-swift-typecheck-module-from-interface(%t/Client_FeatureFlag.package.swiftinterface) -I %t \
87+
// RUN: -module-name Client_FeatureFlag
7388

7489
// RUN: %FileCheck %s --check-prefixes=CHECK,CHECK-6,CHECK-FLAG < %t/Client_FeatureFlag.swiftinterface
7590
// RUN: %FileCheck %s --check-prefixes=CHECK,CHECK-6,CHECK-FLAG < %t/Client_FeatureFlag.private.swiftinterface
91+
// RUN: %FileCheck %s --check-prefixes=CHECK,CHECK-6,CHECK-6-PKG,CHECK-FLAG < %t/Client_FeatureFlag.package.swiftinterface
7692

7793
//--- PublicLib.swift
7894
//--- PackageLib.swift
@@ -82,8 +98,10 @@
8298

8399
//--- Client.swift
84100
// CHECK-5-NOT: public
101+
// CHECK-5-PKG: package import PackageLib
85102
// CHECK-FLAG: -enable-upcoming-feature InternalImportsByDefault
86103
// CHECK-6: public
104+
// CHECK-6-PKG: package import PackageLib
87105

88106
public import PublicLib
89107
// CHECK: PublicLib
@@ -102,8 +120,10 @@ private import PrivateLib
102120

103121
//--- MultiFilesA.swift
104122
public import PublicLib
123+
package import PackageLib
105124
private import InternalLib
106125

107126
//--- MultiFilesB.swift
108127
internal import PublicLib
128+
internal import PackageLib
109129
internal import InternalLib

0 commit comments

Comments
 (0)