Allow loading package interface if in same package.

Add a new flag to enable package interface loading.
Use the last value of package-name in case of dupes.
Rename PrintInterfaceContentMode as InterfaceMode.
Update diagnostics.
Test package interface loading with various scenarios.
Test duplicate package-name.
This commit is contained in:
Ellie Shin
2023-11-08 17:40:40 -08:00
parent aba3b6c24e
commit e5ca8e5c0b
18 changed files with 316 additions and 140 deletions

View File

@@ -417,7 +417,7 @@ static void ParseModuleInterfaceArgs(ModuleInterfaceOptions &Opts,
if (const Arg *A = Args.getLastArg(OPT_library_level)) {
StringRef contents = A->getValue();
if (contents == "spi") {
Opts.InterfaceContentMode = PrintInterfaceContentMode::Private;
Opts.InterfaceContentMode = InterfaceMode::Private;
}
}
for (auto val: Args.getAllArgValues(OPT_skip_import_in_public_interface)) {
@@ -622,6 +622,12 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
Opts.EnableAccessControl
= A->getOption().matches(OPT_enable_access_control);
}
if (auto A = Args.getLastArg(OPT_experimental_package_interface_load,
OPT_experimental_package_interface_load)) {
Opts.EnablePackageInterfaceLoad
= A->getOption().matches(OPT_experimental_package_interface_load);
}
Opts.ForceWorkaroundBrokenModules
|= Args.hasArg(OPT_force_workaround_broken_modules);