Do not print package-name in non-package interface by default.

Having package-name printed in public or private interface led to strange dependency errors in the past. For example, an SPI module is a dependency within a package, but due to the package-name being printed in public or private interface, dependency scanner tries to find it even for an external client of the package, causing a `no such module found` error. The  -disable-print-package-name-for-non-package flag helps with such case, but to enforce the correct behavior, we should make it a default to not print package-name in public or private interface.

Resolves rdar://135260270
This commit is contained in:
elsh
2024-09-04 02:36:16 -07:00
parent 2b817f377d
commit 640b1252fc
4 changed files with 10 additions and 11 deletions

View File

@@ -525,7 +525,6 @@ static void ParseModuleInterfaceArgs(ModuleInterfaceOptions &Opts,
Args.hasArg(OPT_debug_emit_invalid_swiftinterface_syntax);
Opts.PrintMissingImports =
!Args.hasArg(OPT_disable_print_missing_imports_in_module_interface);
Opts.DisablePackageNameForNonPackageInterface |= Args.hasArg(OPT_disable_print_package_name_for_non_package_interface);
if (const Arg *A = Args.getLastArg(OPT_library_level)) {
StringRef contents = A->getValue();
@@ -557,8 +556,8 @@ static bool ShouldIncludeModuleInterfaceArg(const Arg *A) {
static bool IsPackageInterfaceFlag(const Arg *A, ArgList &Args) {
return A->getOption().matches(options::OPT_package_name) &&
Args.hasArg(
options::OPT_disable_print_package_name_for_non_package_interface);
!Args.hasArg(
options::OPT_print_package_name_in_non_package_interface);
}
static bool IsPrivateInterfaceFlag(const Arg *A, ArgList &Args) {