mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Merge pull request #84475 from artemcm/NoCanImportFailOnWrongArch
Do not fail the build on only finding incompatible-architecture modules on `canImport` queries
This commit is contained in:
@@ -152,7 +152,7 @@ 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 isTestableDependencyLookup,
|
||||
bool isCanImportLookup, bool isTestableDependencyLookup,
|
||||
bool &isFramework, bool &isSystemModule) override;
|
||||
|
||||
std::error_code findModuleFilesInDirectory(
|
||||
@@ -162,7 +162,7 @@ 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 isCanImportLookup, bool IsFramework,
|
||||
bool IsTestableDependencyLookup = false) override;
|
||||
|
||||
bool canImportModule(ImportPath::Module named, SourceLoc loc,
|
||||
@@ -201,7 +201,7 @@ class ExplicitCASModuleLoader : public SerializedModuleLoaderBase {
|
||||
std::unique_ptr<llvm::MemoryBuffer> *moduleBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *moduleDocBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *moduleSourceInfoBuffer,
|
||||
bool skipBuildingInterface, bool isTestableDependencyLookup,
|
||||
bool isCanImportLookup, bool isTestableDependencyLookup,
|
||||
bool &isFramework, bool &isSystemModule) override;
|
||||
|
||||
std::error_code findModuleFilesInDirectory(
|
||||
@@ -211,7 +211,7 @@ class ExplicitCASModuleLoader : 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 IsCanImportLookup, bool IsFramework,
|
||||
bool IsTestableDependencyLookup = false) override;
|
||||
|
||||
bool canImportModule(ImportPath::Module named, SourceLoc loc,
|
||||
@@ -561,7 +561,7 @@ 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,
|
||||
bool IsCanImportLookup, bool IsFramework,
|
||||
bool IsTestableDependencyLookup = false) override;
|
||||
|
||||
bool isCached(StringRef DepPath) override;
|
||||
|
||||
@@ -63,13 +63,19 @@ private:
|
||||
std::unique_ptr<llvm::MemoryBuffer> *ModuleBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *ModuleDocBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *ModuleSourceInfoBuffer,
|
||||
bool SkipBuildingInterface, bool IsFramework,
|
||||
bool IsCanImportLookup, bool IsFramework,
|
||||
bool IsTestableDependencyLookup) override;
|
||||
|
||||
bool canImportModule(ImportPath::Module named, SourceLoc loc,
|
||||
ModuleVersionInfo *versionInfo,
|
||||
bool isTestableImport) override;
|
||||
|
||||
bool handlePossibleTargetMismatch(
|
||||
SourceLoc sourceLocation,
|
||||
StringRef moduleName,
|
||||
const SerializedModuleBaseName &BaseName,
|
||||
bool isCanImportLookup) override;
|
||||
|
||||
virtual void collectVisibleTopLevelModuleNames(
|
||||
SmallVectorImpl<Identifier> &names) const override {
|
||||
llvm_unreachable("Not used");
|
||||
|
||||
@@ -103,7 +103,7 @@ protected:
|
||||
std::unique_ptr<llvm::MemoryBuffer> *moduleBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *moduleDocBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *moduleSourceInfoBuffer,
|
||||
bool skipBuildingInterface, bool isTestableDependencyLookup,
|
||||
bool isCanImportLookup, bool isTestableDependencyLookup,
|
||||
bool &isFramework, bool &isSystemModule);
|
||||
|
||||
/// Attempts to search the provided directory for a loadable serialized
|
||||
@@ -125,8 +125,8 @@ protected:
|
||||
std::unique_ptr<llvm::MemoryBuffer> *ModuleBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *ModuleDocBuffer,
|
||||
std::unique_ptr<llvm::MemoryBuffer> *ModuleSourceInfoBuffer,
|
||||
bool SkipBuildingInterface, bool IsFramework,
|
||||
bool isTestableDependencyLookup = false) = 0;
|
||||
bool IsCanImportLookup, bool IsFramework,
|
||||
bool IsTestableDependencyLookup = false) = 0;
|
||||
|
||||
std::error_code
|
||||
openModuleFile(
|
||||
@@ -151,13 +151,23 @@ protected:
|
||||
/// to list the architectures that \e are present.
|
||||
///
|
||||
/// \returns true if an error diagnostic was emitted
|
||||
virtual bool maybeDiagnoseTargetMismatch(
|
||||
virtual bool handlePossibleTargetMismatch(
|
||||
SourceLoc sourceLocation,
|
||||
StringRef moduleName,
|
||||
const SerializedModuleBaseName &BaseName) {
|
||||
const SerializedModuleBaseName &baseName,
|
||||
bool isCanImportLookup) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/// Assuming the \c baseName is a target-specific Swift module path,
|
||||
/// for a missing target variant, collect all adjacent binary module
|
||||
/// files to build a list of discovered modules for incompatible
|
||||
/// architectures.
|
||||
static void identifyArchitectureVariants(
|
||||
ASTContext &Ctx,
|
||||
const SerializedModuleBaseName &baseName,
|
||||
std::vector<std::string> &incompatibleArchModules);
|
||||
|
||||
/// Determines if the provided path is a cached artifact for dependency
|
||||
/// tracking purposes.
|
||||
virtual bool isCached(StringRef DepPath) {
|
||||
@@ -278,13 +288,14 @@ class ImplicitSerializedModuleLoader : 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 isTestableDependencyLookup = false) override;
|
||||
bool IsCanImportLookup, bool IsFramework,
|
||||
bool IsTestableDependencyLookup = false) override;
|
||||
|
||||
bool maybeDiagnoseTargetMismatch(
|
||||
bool handlePossibleTargetMismatch(
|
||||
SourceLoc sourceLocation,
|
||||
StringRef moduleName,
|
||||
const SerializedModuleBaseName &BaseName) override;
|
||||
const SerializedModuleBaseName &BaseName,
|
||||
bool isCanImportLookup) override;
|
||||
|
||||
public:
|
||||
virtual ~ImplicitSerializedModuleLoader();
|
||||
@@ -336,14 +347,9 @@ class MemoryBufferSerializedModuleLoader : 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 IsCanImportLookup, bool IsFramework,
|
||||
bool IsTestableDependencyLookup = false) override;
|
||||
|
||||
bool maybeDiagnoseTargetMismatch(
|
||||
SourceLoc sourceLocation,
|
||||
StringRef moduleName,
|
||||
const SerializedModuleBaseName &BaseName) override;
|
||||
|
||||
bool BypassResilience;
|
||||
public:
|
||||
virtual ~MemoryBufferSerializedModuleLoader();
|
||||
|
||||
Reference in New Issue
Block a user