@@ -315,6 +315,9 @@ class ImplicitSerializedModuleLoader : public SerializedModuleLoaderBase {
315315class MemoryBufferSerializedModuleLoader : public SerializedModuleLoaderBase {
316316
317317 struct MemoryBufferInfo {
318+ MemoryBufferInfo (std::unique_ptr<llvm::MemoryBuffer> &&buffer,
319+ llvm::VersionTuple userVersion)
320+ : buffer(std::move(buffer)), userVersion(userVersion) {}
318321 std::unique_ptr<llvm::MemoryBuffer> buffer;
319322 llvm::VersionTuple userVersion;
320323 };
@@ -363,11 +366,16 @@ class MemoryBufferSerializedModuleLoader : public SerializedModuleLoaderBase {
363366 // / discovered in the __swift_ast section of a Mach-O file (or the .swift_ast
364367 // / section of an ELF file) to the search path.
365368 // /
369+ // / If a module is inserted twice, the first one wins, and the return value is
370+ // / false.
371+ // /
366372 // / FIXME: make this an actual import *path* once submodules are designed.
367- void registerMemoryBuffer (StringRef importPath,
373+ bool registerMemoryBuffer (StringRef importPath,
368374 std::unique_ptr<llvm::MemoryBuffer> input,
369375 llvm::VersionTuple version) {
370- MemoryBuffers[importPath] = {std::move (input), version};
376+ return MemoryBuffers
377+ .insert ({importPath, MemoryBufferInfo (std::move (input), version)})
378+ .second ;
371379 }
372380
373381 void collectVisibleTopLevelModuleNames (
0 commit comments