Skip to content

Commit 5430ad5

Browse files
committed
Frontend: change return type of CompilerInstance::getInputBuffersIfPresent to be Optional. NFC
1 parent c9647bb commit 5430ad5

File tree

2 files changed

+23
-20
lines changed

2 files changed

+23
-20
lines changed

include/swift/Frontend/Frontend.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -560,13 +560,19 @@ class CompilerInstance {
560560
std::unique_ptr<llvm::MemoryBuffer> ModuleBuffer;
561561
std::unique_ptr<llvm::MemoryBuffer> ModuleDocBuffer;
562562
std::unique_ptr<llvm::MemoryBuffer> ModuleSourceInfoBuffer;
563+
ModuleBuffers(std::unique_ptr<llvm::MemoryBuffer> ModuleBuffer,
564+
std::unique_ptr<llvm::MemoryBuffer> ModuleDocBuffer = nullptr,
565+
std::unique_ptr<llvm::MemoryBuffer> ModuleSourceInfoBuffer = nullptr):
566+
ModuleBuffer(std::move(ModuleBuffer)),
567+
ModuleDocBuffer(std::move(ModuleDocBuffer)),
568+
ModuleSourceInfoBuffer(std::move(ModuleSourceInfoBuffer)) {}
563569
};
564570

565571
/// Given an input file, return a buffer to use for its contents,
566572
/// and a buffer for the corresponding module doc file if one exists.
567573
/// On failure, return a null pointer for the first element of the returned
568574
/// pair.
569-
ModuleBuffers getInputBuffersIfPresent(const InputFile &input);
575+
Optional<ModuleBuffers> getInputBuffersIfPresent(const InputFile &input);
570576

571577
/// Try to open the module doc file corresponding to the input parameter.
572578
/// Return None for error, nullptr if no such file exists, or the buffer if

lib/Frontend/Frontend.cpp

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -470,33 +470,33 @@ Optional<unsigned> CompilerInstance::getRecordedBufferID(const InputFile &input,
470470
}
471471
auto buffers = getInputBuffersIfPresent(input);
472472

473-
if (!buffers.ModuleBuffer) {
473+
if (!buffers.hasValue()) {
474474
failed = true;
475475
return None;
476476
}
477477

478478
// FIXME: The fact that this test happens twice, for some cases,
479479
// suggests that setupInputs could use another round of refactoring.
480-
if (serialization::isSerializedAST(buffers.ModuleBuffer->getBuffer())) {
480+
if (serialization::isSerializedAST(buffers->ModuleBuffer->getBuffer())) {
481481
PartialModules.push_back(
482-
{std::move(buffers.ModuleBuffer), std::move(buffers.ModuleDocBuffer),
483-
std::move(buffers.ModuleSourceInfoBuffer)});
482+
{std::move(buffers->ModuleBuffer), std::move(buffers->ModuleDocBuffer),
483+
std::move(buffers->ModuleSourceInfoBuffer)});
484484
return None;
485485
}
486-
assert(buffers.ModuleDocBuffer.get() == nullptr);
487-
assert(buffers.ModuleSourceInfoBuffer.get() == nullptr);
486+
assert(buffers->ModuleDocBuffer.get() == nullptr);
487+
assert(buffers->ModuleSourceInfoBuffer.get() == nullptr);
488488
// Transfer ownership of the MemoryBuffer to the SourceMgr.
489-
unsigned bufferID = SourceMgr.addNewSourceBuffer(std::move(buffers.ModuleBuffer));
489+
unsigned bufferID = SourceMgr.addNewSourceBuffer(std::move(buffers->ModuleBuffer));
490490

491491
InputSourceCodeBufferIDs.push_back(bufferID);
492492
return bufferID;
493493
}
494494

495-
CompilerInstance::ModuleBuffers CompilerInstance::getInputBuffersIfPresent(
495+
Optional<CompilerInstance::ModuleBuffers> CompilerInstance::getInputBuffersIfPresent(
496496
const InputFile &input) {
497497
if (auto b = input.buffer()) {
498-
return {llvm::MemoryBuffer::getMemBufferCopy(b->getBuffer(), b->getBufferIdentifier()),
499-
nullptr, nullptr};
498+
return ModuleBuffers(llvm::MemoryBuffer::getMemBufferCopy(b->getBuffer(),
499+
b->getBufferIdentifier()));
500500
}
501501
// FIXME: Working with filenames is fragile, maybe use the real path
502502
// or have some kind of FileManager.
@@ -506,19 +506,16 @@ CompilerInstance::ModuleBuffers CompilerInstance::getInputBuffersIfPresent(
506506
if (!inputFileOrErr) {
507507
Diagnostics.diagnose(SourceLoc(), diag::error_open_input_file, input.file(),
508508
inputFileOrErr.getError().message());
509-
return {nullptr, nullptr, nullptr};
509+
return None;
510510
}
511511
if (!serialization::isSerializedAST((*inputFileOrErr)->getBuffer()))
512-
return {std::move(*inputFileOrErr), nullptr, nullptr};
513-
514-
Optional<std::unique_ptr<llvm::MemoryBuffer>> moduleDocBuffer = openModuleDoc(input);
515-
Optional<std::unique_ptr<llvm::MemoryBuffer>> moduleSourceInfoBuffer = openModuleSourceInfo(input);
512+
return ModuleBuffers(std::move(*inputFileOrErr));
516513

517-
return {
514+
return ModuleBuffers(
518515
std::move(*inputFileOrErr),
519-
moduleDocBuffer.hasValue() ? std::move(*moduleDocBuffer): nullptr,
520-
moduleSourceInfoBuffer.hasValue() ? std::move(*moduleSourceInfoBuffer): nullptr
521-
};
516+
openModuleDoc(input).getValueOr(nullptr),
517+
openModuleSourceInfo(input).getValueOr(nullptr)
518+
);
522519
}
523520

524521
Optional<std::unique_ptr<llvm::MemoryBuffer>>

0 commit comments

Comments
 (0)