Update which matches clang r212408, ie, using ErrorOr for file loading

Swift SVN r19607
This commit is contained in:
Pete Cooper
2014-07-07 14:49:01 +00:00
parent 151d34dc4b
commit 0d0defff9a
7 changed files with 84 additions and 61 deletions

View File

@@ -45,20 +45,23 @@ openModuleFiles(StringRef DirName, StringRef ModuleFilename,
// module documentation file.
Scratch.clear();
llvm::sys::path::append(Scratch, DirName, ModuleFilename);
if (auto Err = llvm::MemoryBuffer::getFile(
StringRef(Scratch.data(), Scratch.size()), ModuleBuffer))
return Err;
llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> ModuleOrErr =
llvm::MemoryBuffer::getFile(StringRef(Scratch.data(), Scratch.size()));
if (!ModuleOrErr)
return ModuleOrErr.getError();
// Try to open the module documentation file. If it does not exist, ignore
// the error. However, pass though all other errors.
Scratch.clear();
llvm::sys::path::append(Scratch, DirName, ModuleDocFilename);
auto Err = llvm::MemoryBuffer::getFile(
StringRef(Scratch.data(), Scratch.size()), ModuleDocBuffer);
if (Err && Err != std::errc::no_such_file_or_directory) {
ModuleBuffer.reset(nullptr);
return Err;
llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> ModuleDocOrErr =
llvm::MemoryBuffer::getFile(StringRef(Scratch.data(), Scratch.size()));
if (!ModuleDocOrErr &&
ModuleDocOrErr.getError() != std::errc::no_such_file_or_directory) {
return ModuleDocOrErr.getError();
}
ModuleBuffer = std::move(ModuleOrErr.get());
ModuleDocBuffer = std::move(ModuleDocOrErr.get());
return std::error_code();
}