mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Dependency Scanning] Pull optional dependencies from the adjacent binary module for direct interface dependencies
For a `@Testable` import in program source, if a Swift interface dependency is discovered, and has an adjacent binary `.swiftmodule`, open up the module, and pull in its optional dependencies. If an optional dependency cannot be resolved on the filesystem, fail silently without raising a diagnostic.
This commit is contained in:
@@ -142,8 +142,8 @@ class ExplicitSwiftModuleLoader: public SerializedModuleLoaderBase {
|
||||
std::unique_ptr<llvm::MemoryBuffer> *moduleBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *moduleDocBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *moduleSourceInfoBuffer,
|
||||
bool skipBuildingInterface, bool &isFramework,
|
||||
bool &isSystemModule) override;
|
||||
bool skipBuildingInterface, bool isTestableDependencyLookup,
|
||||
bool &isFramework, bool &isSystemModule) override;
|
||||
|
||||
std::error_code findModuleFilesInDirectory(
|
||||
ImportPath::Element ModuleID, const SerializedModuleBaseName &BaseName,
|
||||
@@ -152,10 +152,12 @@ class ExplicitSwiftModuleLoader: public SerializedModuleLoaderBase {
|
||||
std::unique_ptr<llvm::MemoryBuffer> *ModuleBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *ModuleDocBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *ModuleSourceInfoBuffer,
|
||||
bool skipBuildingInterface, bool IsFramework) override;
|
||||
bool SkipBuildingInterface, bool IsFramework,
|
||||
bool IsTestableDependencyLookup = false) override;
|
||||
|
||||
bool canImportModule(ImportPath::Module named,
|
||||
ModuleVersionInfo *versionInfo) override;
|
||||
ModuleVersionInfo *versionInfo,
|
||||
bool isTestableDependencyLookup = false) override;
|
||||
|
||||
bool isCached(StringRef DepPath) override { return false; };
|
||||
|
||||
@@ -477,7 +479,8 @@ class ModuleInterfaceLoader : public SerializedModuleLoaderBase {
|
||||
std::unique_ptr<llvm::MemoryBuffer> *ModuleBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *ModuleDocBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *ModuleSourceInfoBuffer,
|
||||
bool skipBuildingInterface, bool IsFramework) override;
|
||||
bool SkipBuildingInterface, bool IsFramework,
|
||||
bool IsTestableDependencyLookup = false) override;
|
||||
|
||||
bool isCached(StringRef DepPath) override;
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user