diff options
Diffstat (limited to 'contrib/llvm/tools/lld/lib/ReaderWriter/FileArchive.cpp')
-rw-r--r-- | contrib/llvm/tools/lld/lib/ReaderWriter/FileArchive.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/contrib/llvm/tools/lld/lib/ReaderWriter/FileArchive.cpp b/contrib/llvm/tools/lld/lib/ReaderWriter/FileArchive.cpp index eb7e7fb..799f947 100644 --- a/contrib/llvm/tools/lld/lib/ReaderWriter/FileArchive.cpp +++ b/contrib/llvm/tools/lld/lib/ReaderWriter/FileArchive.cpp @@ -52,9 +52,12 @@ public: Archive::Child c = member->second; // Don't return a member already returned - ErrorOr<StringRef> buf = c.getBuffer(); - if (!buf) + Expected<StringRef> buf = c.getBuffer(); + if (!buf) { + // TODO: Actually report errors helpfully. + consumeError(buf.takeError()); return nullptr; + } const char *memberStart = buf->data(); if (_membersInstantiated.count(memberStart)) return nullptr; @@ -76,7 +79,7 @@ public: parseAllMembers(std::vector<std::unique_ptr<File>> &result) override { if (std::error_code ec = parse()) return ec; - llvm::Error err; + llvm::Error err = llvm::Error::success(); for (auto mf = _archive->child_begin(err), me = _archive->child_end(); mf != me; ++mf) { std::unique_ptr<File> file; @@ -119,7 +122,7 @@ public: protected: std::error_code doParse() override { // Make Archive object which will be owned by FileArchive object. - llvm::Error Err; + llvm::Error Err = llvm::Error::success(); _archive.reset(new Archive(_mb->getMemBufferRef(), Err)); if (Err) return errorToErrorCode(std::move(Err)); @@ -132,9 +135,9 @@ protected: private: std::error_code instantiateMember(Archive::Child member, std::unique_ptr<File> &result) const { - ErrorOr<llvm::MemoryBufferRef> mbOrErr = member.getMemoryBufferRef(); - if (std::error_code ec = mbOrErr.getError()) - return ec; + Expected<llvm::MemoryBufferRef> mbOrErr = member.getMemoryBufferRef(); + if (!mbOrErr) + return errorToErrorCode(mbOrErr.takeError()); llvm::MemoryBufferRef mb = mbOrErr.get(); std::string memberPath = (_archive->getFileName() + "(" + mb.getBufferIdentifier() + ")").str(); @@ -166,9 +169,9 @@ private: << _archive->getFileName() << "':\n"); for (const Archive::Symbol &sym : _archive->symbols()) { StringRef name = sym.getName(); - ErrorOr<Archive::Child> memberOrErr = sym.getMember(); - if (std::error_code ec = memberOrErr.getError()) - return ec; + Expected<Archive::Child> memberOrErr = sym.getMember(); + if (!memberOrErr) + return errorToErrorCode(memberOrErr.takeError()); Archive::Child member = memberOrErr.get(); DEBUG_WITH_TYPE("FileArchive", llvm::dbgs() |