@@ -315,6 +315,9 @@ class ImplicitSerializedModuleLoader : public SerializedModuleLoaderBase {
315
315
class MemoryBufferSerializedModuleLoader : public SerializedModuleLoaderBase {
316
316
317
317
struct MemoryBufferInfo {
318
+ MemoryBufferInfo (std::unique_ptr<llvm::MemoryBuffer> &&buffer,
319
+ llvm::VersionTuple userVersion)
320
+ : buffer(std::move(buffer)), userVersion(userVersion) {}
318
321
std::unique_ptr<llvm::MemoryBuffer> buffer;
319
322
llvm::VersionTuple userVersion;
320
323
};
@@ -363,11 +366,16 @@ class MemoryBufferSerializedModuleLoader : public SerializedModuleLoaderBase {
363
366
// / discovered in the __swift_ast section of a Mach-O file (or the .swift_ast
364
367
// / section of an ELF file) to the search path.
365
368
// /
369
+ // / If a module is inserted twice, the first one wins, and the return value is
370
+ // / false.
371
+ // /
366
372
// / FIXME: make this an actual import *path* once submodules are designed.
367
- void registerMemoryBuffer (StringRef importPath,
373
+ bool registerMemoryBuffer (StringRef importPath,
368
374
std::unique_ptr<llvm::MemoryBuffer> input,
369
375
llvm::VersionTuple version) {
370
- MemoryBuffers[importPath] = {std::move (input), version};
376
+ return MemoryBuffers
377
+ .insert ({importPath, MemoryBufferInfo (std::move (input), version)})
378
+ .second ;
371
379
}
372
380
373
381
void collectVisibleTopLevelModuleNames (
0 commit comments