Skip to content

Commit 153d64a

Browse files
committed
[PackageInterface] Only print package-name in package.swiftinterface by default.
Add an option to print it in public/private swiftinterface. Ref rdar://133319906
1 parent 30ce1b0 commit 153d64a

File tree

5 files changed

+44
-34
lines changed

5 files changed

+44
-34
lines changed

include/swift/Frontend/ModuleInterfaceSupport.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,6 @@ struct ModuleInterfaceOptions {
7070
/// Print imports that are missing from the source and used in API.
7171
bool PrintMissingImports = true;
7272

73-
/// If true, package-name flag is not printed in either public or private
74-
/// interface file.
75-
bool DisablePackageNameForNonPackageInterface = false;
76-
7773
/// Intentionally print invalid syntax into the file.
7874
bool DebugPrintInvalidSyntax = false;
7975

include/swift/Option/Options.td

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,12 @@ def disable_bridging_pch : Flag<["-"], "disable-bridging-pch">,
728728
def disable_print_package_name_for_non_package_interface :
729729
Flag<["-"], "disable-print-package-name-for-non-package-interface">,
730730
Flags<[FrontendOption, NoDriverOption, ModuleInterfaceOption, HelpHidden]>,
731-
HelpText<"Disable adding package name to public or private interface">;
731+
HelpText<"Deprecated, has no effect. Package name is by default only printed in package swiftinterface.">;
732+
733+
def print_package_name_in_non_package_interface :
734+
Flag<["-"], "print-package-name-in-non-package-interface">,
735+
Flags<[FrontendOption, NoDriverOption, ModuleInterfaceOption, HelpHidden]>,
736+
HelpText<"Print package name in public/private interface">;
732737

733738
def lto : Joined<["-"], "lto=">,
734739
Flags<[FrontendOption, NoInteractiveOption]>,

lib/Frontend/CompilerInvocation.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,6 @@ static void ParseModuleInterfaceArgs(ModuleInterfaceOptions &Opts,
460460
Args.hasArg(OPT_debug_emit_invalid_swiftinterface_syntax);
461461
Opts.PrintMissingImports =
462462
!Args.hasArg(OPT_disable_print_missing_imports_in_module_interface);
463-
Opts.DisablePackageNameForNonPackageInterface |= Args.hasArg(OPT_disable_print_package_name_for_non_package_interface);
464463

465464
if (const Arg *A = Args.getLastArg(OPT_library_level)) {
466465
StringRef contents = A->getValue();
@@ -492,8 +491,7 @@ static bool ShouldIncludeModuleInterfaceArg(const Arg *A) {
492491

493492
static bool IsPackageInterfaceFlag(const Arg *A, ArgList &Args) {
494493
return A->getOption().matches(options::OPT_package_name) &&
495-
Args.hasArg(
496-
options::OPT_disable_print_package_name_for_non_package_interface);
494+
!Args.hasArg(options::OPT_print_package_name_in_non_package_interface);
497495
}
498496

499497
static bool IsPrivateInterfaceFlag(const Arg *A, ArgList &Args) {

test/ModuleInterface/package_interface.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ public enum PubEnum {
2323
case red, green
2424
}
2525

26-
// CHECK: -package-name barpkg
26+
// CHECK-PKG: -package-name barpkg
27+
2728
// CHECK: public enum PubEnum {
2829
// CHECK: case red, green
2930
// CHECK: public static func == (a: Bar.PubEnum, b: Bar.PubEnum) -> Swift.Bool
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,24 @@
1-
// RUN: %empty-directory(%t)
1+
// RUN: %empty-directory(%t)
22

3-
/// Do not print package-name for public or private interfaces
3+
/// First, test the default mode; -package-name is only printed in package interface.
44
// RUN: %target-build-swift -emit-module %s -I %t \
5-
// RUN: -module-name Bar -package-name foopkg \
5+
// RUN: -module-name Bar -package-name barpkg \
66
// RUN: -enable-library-evolution -swift-version 6 \
7-
// RUN: -package-name barpkg \
8-
// RUN: -Xfrontend -disable-print-package-name-for-non-package-interface \
97
// RUN: -emit-module-interface-path %t/Bar.swiftinterface \
108
// RUN: -emit-private-module-interface-path %t/Bar.private.swiftinterface \
119
// RUN: -emit-package-module-interface-path %t/Bar.package.swiftinterface
1210

13-
// RUN: %FileCheck %s --check-prefix=CHECK-PUBLIC < %t/Bar.swiftinterface
14-
// RUN: %FileCheck %s --check-prefix=CHECK-PRIVATE < %t/Bar.private.swiftinterface
11+
// RUN: %FileCheck %s --check-prefix=CHECK < %t/Bar.swiftinterface
12+
// RUN: %FileCheck %s --check-prefix=CHECK < %t/Bar.private.swiftinterface
1513
// RUN: %FileCheck %s --check-prefix=CHECK-PACKAGE < %t/Bar.package.swiftinterface
1614

17-
// CHECK-PUBLIC-NOT: -package-name foopkg
18-
// CHECK-PUBLIC-NOT: -package-name barpkg
19-
// CHECK-PRIVATE-NOT: -package-name foopkg
20-
// CHECK-PRIVATE-NOT: -package-name barpkg
21-
// CHECK-PACKAGE-NOT: -package-name foopkg
22-
23-
// CHECK-PUBLIC: -enable-library-evolution -swift-version 6 -disable-print-package-name-for-non-package-interface -module-name Bar
24-
// CHECK-PRIVATE: -enable-library-evolution -swift-version 6 -disable-print-package-name-for-non-package-interface -module-name Bar
25-
// CHECK-PACKAGE: -enable-library-evolution -swift-version 6 -disable-print-package-name-for-non-package-interface -module-name Bar -package-name barpkg
15+
// CHECK-NOT: -package-name barpkg
16+
// CHECK-PACKAGE-DAG: -package-name barpkg
17+
// CHECK-PACKAGE-DAG: -module-name Bar
18+
// CHECK-PACKAGE-DAG: -enable-library-evolution
19+
// CHECK-PACKAGE-DAG: -swift-version 6
2620

27-
/// Verify building modules from non-package interfaces succeeds without the package-name flag.
21+
/// Building modules from non-package interfaces without package-name should succeed.
2822
// RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
2923
// RUN: rm -rf %t/Bar.swiftmodule
3024
// RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.private.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
@@ -36,27 +30,43 @@
3630
// RUN: rm -rf %t/Bar.private.swiftinterface
3731
// RUN: rm -rf %t/Bar.package.swiftinterface
3832

39-
/// By default, -package-name is printed in all interfaces.
33+
/// Second, test pringing package-name in public and private interfaces.
4034
// RUN: %target-build-swift -emit-module %s -I %t \
41-
// RUN: -module-name Bar -package-name barpkg \
35+
// RUN: -module-name Bar \
4236
// RUN: -enable-library-evolution -swift-version 6 \
37+
// RUN: -package-name foopkg -package-name barpkg \
38+
// RUN: -Xfrontend -print-package-name-in-non-package-interface \
4339
// RUN: -emit-module-interface-path %t/Bar.swiftinterface \
4440
// RUN: -emit-private-module-interface-path %t/Bar.private.swiftinterface \
4541
// RUN: -emit-package-module-interface-path %t/Bar.package.swiftinterface
4642

47-
// RUN: %FileCheck %s < %t/Bar.swiftinterface
48-
// RUN: %FileCheck %s < %t/Bar.private.swiftinterface
49-
// RUN: %FileCheck %s < %t/Bar.package.swiftinterface
43+
// RUN: %FileCheck %s --check-prefix=CHECK-OPTIN < %t/Bar.swiftinterface
44+
// RUN: %FileCheck %s --check-prefix=CHECK-OPTIN < %t/Bar.private.swiftinterface
45+
// RUN: %FileCheck %s --check-prefix=CHECK-PACKAGE < %t/Bar.package.swiftinterface
5046

51-
// CHECK: -enable-library-evolution -package-name barpkg -swift-version 6 -module-name Bar
47+
// CHECK-OPTIN-NOT: -package-name foopkg
48+
// CHECK-OPTIN-DAG: -package-name barpkg
49+
// CHECK-OPTIN-DAG: -module-name Bar
50+
// CHECK-OPTIN-DAG: -enable-library-evolution
51+
// CHECK-OPTIN-DAG: -swift-version 6
5252

53-
/// Building modules from non-package interfaces with package-name (default mode) should succeed.
53+
/// Verify building modules from non-package interfaces succeeds with the package-name flag.
5454
// RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
5555
// RUN: rm -rf %t/Bar.swiftmodule
5656
// RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.private.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
5757
// RUN: rm -rf %t/Bar.swiftmodule
5858
// RUN: %target-swift-frontend -compile-module-from-interface %t/Bar.package.swiftinterface -o %t/Bar.swiftmodule -module-name Bar
5959

60-
public struct PubStruct {}
60+
public struct PubStruct {
61+
internal var intVar: UfiPkgStruct.UfiNestedPkgStruct?
62+
}
63+
64+
@usableFromInline
65+
package struct UfiPkgStruct {
66+
@usableFromInline
67+
package struct UfiNestedPkgStruct {}
68+
}
69+
6170
@_spi(bar) public struct SPIStruct {}
71+
6272
package struct PkgStruct {}

0 commit comments

Comments
 (0)