Skip to content

Commit 86fd2f5

Browse files
Merge pull request swiftlang#73153 from adrian-prantl/register-memorybuffer-6.0
Define the semantics of registerMemoryBuffer() when insterting duplic…
2 parents 8afcdff + 8781d12 commit 86fd2f5

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

include/swift/Serialization/SerializedModuleLoader.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,9 @@ class ImplicitSerializedModuleLoader : public SerializedModuleLoaderBase {
302302
class MemoryBufferSerializedModuleLoader : public SerializedModuleLoaderBase {
303303

304304
struct MemoryBufferInfo {
305+
MemoryBufferInfo(std::unique_ptr<llvm::MemoryBuffer> &&buffer,
306+
llvm::VersionTuple userVersion)
307+
: buffer(std::move(buffer)), userVersion(userVersion) {}
305308
std::unique_ptr<llvm::MemoryBuffer> buffer;
306309
llvm::VersionTuple userVersion;
307310
};
@@ -350,11 +353,16 @@ class MemoryBufferSerializedModuleLoader : public SerializedModuleLoaderBase {
350353
/// discovered in the __swift_ast section of a Mach-O file (or the .swift_ast
351354
/// section of an ELF file) to the search path.
352355
///
356+
/// If a module is inserted twice, the first one wins, and the return value is
357+
/// false.
358+
///
353359
/// FIXME: make this an actual import *path* once submodules are designed.
354-
void registerMemoryBuffer(StringRef importPath,
360+
bool registerMemoryBuffer(StringRef importPath,
355361
std::unique_ptr<llvm::MemoryBuffer> input,
356362
llvm::VersionTuple version) {
357-
MemoryBuffers[importPath] = {std::move(input), version};
363+
return MemoryBuffers
364+
.insert({importPath, MemoryBufferInfo(std::move(input), version)})
365+
.second;
358366
}
359367

360368
void collectVisibleTopLevelModuleNames(

0 commit comments

Comments
 (0)