Add -swift-module-file frontend flag for explicit Swift module dependencies

This commit is contained in:
Artem Chikin
2023-02-03 15:08:12 -08:00
parent 7a89642341
commit c1599fede4
7 changed files with 55 additions and 2 deletions

View File

@@ -1897,6 +1897,16 @@ struct ExplicitSwiftModuleLoader::Implementation {
}
}
}
void addCommandLineExplicitInputs(
const std::vector<std::pair<std::string, std::string>>
&commandLineExplicitInputs) {
for (const auto &moduleInput : commandLineExplicitInputs) {
ExplicitModuleInfo entry;
entry.modulePath = moduleInput.second;
ExplicitModuleMap.try_emplace(moduleInput.first, std::move(entry));
}
}
};
ExplicitSwiftModuleLoader::ExplicitSwiftModuleLoader(
@@ -2057,6 +2067,7 @@ std::unique_ptr<ExplicitSwiftModuleLoader>
ExplicitSwiftModuleLoader::create(ASTContext &ctx,
DependencyTracker *tracker, ModuleLoadingMode loadMode,
StringRef ExplicitSwiftModuleMap,
const std::vector<std::pair<std::string, std::string>> &ExplicitSwiftModuleInputs,
bool IgnoreSwiftSourceInfoFile) {
auto result = std::unique_ptr<ExplicitSwiftModuleLoader>(
new ExplicitSwiftModuleLoader(ctx, tracker, loadMode,
@@ -2067,6 +2078,11 @@ ExplicitSwiftModuleLoader::create(ASTContext &ctx,
// Parse a JSON file to collect explicitly built modules.
Impl.parseSwiftExplicitModuleMap(ExplicitSwiftModuleMap);
}
// If some modules are provided with explicit
// '-swift-module-file' options, add those as well.
if (!ExplicitSwiftModuleInputs.empty()) {
Impl.addCommandLineExplicitInputs(ExplicitSwiftModuleInputs);
}
return result;
}