@@ -302,6 +302,9 @@ class ImplicitSerializedModuleLoader : public SerializedModuleLoaderBase {
302
302
class MemoryBufferSerializedModuleLoader : public SerializedModuleLoaderBase {
303
303
304
304
struct MemoryBufferInfo {
305
+ MemoryBufferInfo (std::unique_ptr<llvm::MemoryBuffer> &&buffer,
306
+ llvm::VersionTuple userVersion)
307
+ : buffer(std::move(buffer)), userVersion(userVersion) {}
305
308
std::unique_ptr<llvm::MemoryBuffer> buffer;
306
309
llvm::VersionTuple userVersion;
307
310
};
@@ -350,11 +353,16 @@ class MemoryBufferSerializedModuleLoader : public SerializedModuleLoaderBase {
350
353
// / discovered in the __swift_ast section of a Mach-O file (or the .swift_ast
351
354
// / section of an ELF file) to the search path.
352
355
// /
356
+ // / If a module is inserted twice, the first one wins, and the return value is
357
+ // / false.
358
+ // /
353
359
// / FIXME: make this an actual import *path* once submodules are designed.
354
- void registerMemoryBuffer (StringRef importPath,
360
+ bool registerMemoryBuffer (StringRef importPath,
355
361
std::unique_ptr<llvm::MemoryBuffer> input,
356
362
llvm::VersionTuple version) {
357
- MemoryBuffers[importPath] = {std::move (input), version};
363
+ return MemoryBuffers
364
+ .insert ({importPath, MemoryBufferInfo (std::move (input), version)})
365
+ .second ;
358
366
}
359
367
360
368
void collectVisibleTopLevelModuleNames (
0 commit comments