mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[ModuleInterface] <rdar://46081260> Fallback behaviour and testing env vars.
This commit is contained in:
committed by
Jordan Rose
parent
0ccfe34513
commit
f7200e87bd
@@ -20,6 +20,13 @@
|
||||
namespace swift {
|
||||
class ModuleFile;
|
||||
|
||||
enum class ModuleLoadingMode {
|
||||
PreferParseable,
|
||||
PreferSerialized,
|
||||
OnlyParseable,
|
||||
OnlySerialized
|
||||
};
|
||||
|
||||
/// Common functionality shared between \c SerializedModuleLoader and
|
||||
/// \c ParseableInterfaceModuleLoader.
|
||||
class SerializedModuleLoaderBase : public ModuleLoader {
|
||||
@@ -32,7 +39,9 @@ class SerializedModuleLoaderBase : public ModuleLoader {
|
||||
protected:
|
||||
llvm::StringMap<std::unique_ptr<llvm::MemoryBuffer>> MemoryBuffers;
|
||||
ASTContext &Ctx;
|
||||
SerializedModuleLoaderBase(ASTContext &ctx, DependencyTracker *tracker);
|
||||
ModuleLoadingMode LoadMode;
|
||||
SerializedModuleLoaderBase(ASTContext &ctx, DependencyTracker *tracker,
|
||||
ModuleLoadingMode LoadMode);
|
||||
|
||||
using AccessPathElem = std::pair<Identifier, SourceLoc>;
|
||||
bool findModule(AccessPathElem moduleID,
|
||||
@@ -100,8 +109,9 @@ public:
|
||||
/// Imports serialized Swift modules into an ASTContext.
|
||||
class SerializedModuleLoader : public SerializedModuleLoaderBase {
|
||||
|
||||
SerializedModuleLoader(ASTContext &ctx, DependencyTracker *tracker)
|
||||
: SerializedModuleLoaderBase(ctx, tracker)
|
||||
SerializedModuleLoader(ASTContext &ctx, DependencyTracker *tracker,
|
||||
ModuleLoadingMode loadMode)
|
||||
: SerializedModuleLoaderBase(ctx, tracker, loadMode)
|
||||
{}
|
||||
|
||||
public:
|
||||
@@ -120,9 +130,10 @@ public:
|
||||
/// Create a new importer that can load serialized Swift modules
|
||||
/// into the given ASTContext.
|
||||
static std::unique_ptr<SerializedModuleLoader>
|
||||
create(ASTContext &ctx, DependencyTracker *tracker = nullptr) {
|
||||
create(ASTContext &ctx, DependencyTracker *tracker = nullptr,
|
||||
ModuleLoadingMode loadMode = ModuleLoadingMode::PreferSerialized) {
|
||||
return std::unique_ptr<SerializedModuleLoader>{
|
||||
new SerializedModuleLoader(ctx, tracker)
|
||||
new SerializedModuleLoader(ctx, tracker, loadMode)
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user