Return an ErrorOr<std::unique_ptr<File>>. NFC.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 24 Apr 2015 18:33:50 +0000 (18:33 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 24 Apr 2015 18:33:50 +0000 (18:33 +0000)
llvm-svn: 235741

lld/include/lld/Core/Reader.h
lld/lib/Core/Reader.cpp
lld/lib/ReaderWriter/ELF/ELFReader.h
lld/lib/ReaderWriter/FileArchive.cpp
lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp
lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
lld/lib/ReaderWriter/PECOFF/ReaderImportHeader.cpp
lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp

index 0b6cf65..0c9d67b 100644 (file)
@@ -51,9 +51,8 @@ public:
   /// \brief Parse a supplied buffer (already filled with the contents of a
   /// file) and create a File object.
   /// The resulting File object takes ownership of the MemoryBuffer.
-  virtual std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb,
-                                   const class Registry &,
-                                   std::unique_ptr<File> &result) const = 0;
+  virtual ErrorOr<std::unique_ptr<File>>
+  loadFile(std::unique_ptr<MemoryBuffer> mb, const class Registry &) const = 0;
 };
 
 
index c97193d..d27cc73 100644 (file)
@@ -38,8 +38,11 @@ std::error_code Registry::loadFile(std::unique_ptr<MemoryBuffer> mb,
   for (const std::unique_ptr<Reader> &reader : _readers) {
     if (!reader->canParse(fileType, *mb))
       continue;
-    if (std::error_code ec = reader->loadFile(std::move(mb), *this, result))
+    ErrorOr<std::unique_ptr<File>> fileOrErr =
+        reader->loadFile(std::move(mb), *this);
+    if (std::error_code ec = fileOrErr.getError())
       return ec;
+    result = std::move(fileOrErr.get());
     return std::error_code();
   }
 
index 76f3823..ef337f5 100644 (file)
@@ -28,13 +28,13 @@ public:
     return FileT::canParse(magic);
   }
 
-  std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb,
-                           const class Registry &,
-                           std::unique_ptr<File> &result) const override {
+  ErrorOr<std::unique_ptr<File>>
+  loadFile(std::unique_ptr<MemoryBuffer> mb,
+           const class Registry &) const override {
     if (std::error_code ec = FileT::isCompatible(*mb, _ctx))
       return ec;
-    result = llvm::make_unique<FileT>(std::move(mb), _ctx);
-    return std::error_code();
+    std::unique_ptr<File> ret = llvm::make_unique<FileT>(std::move(mb), _ctx);
+    return std::move(ret);
   }
 
 private:
index 23a2cb5..4f7863d 100644 (file)
@@ -267,13 +267,12 @@ public:
     return magic == llvm::sys::fs::file_magic::archive;
   }
 
-  std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb,
-                           const Registry &reg,
-                           std::unique_ptr<File> &result) const override {
+  ErrorOr<std::unique_ptr<File>> loadFile(std::unique_ptr<MemoryBuffer> mb,
+                                          const Registry &reg) const override {
     StringRef path = mb->getBufferIdentifier();
-    result =
+    std::unique_ptr<File> ret =
         llvm::make_unique<FileArchive>(std::move(mb), reg, path, _logLoading);
-    return std::error_code();
+    return std::move(ret);
   }
 
 private:
index 45757ee..c0d8500 100644 (file)
@@ -522,11 +522,12 @@ public:
             mb.getBufferSize() > 32);
   }
 
-  std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb,
-                           const Registry &registry,
-                           std::unique_ptr<File> &result) const override {
-    result = llvm::make_unique<MachOFile>(std::move(mb), &_ctx);
-    return std::error_code();
+  ErrorOr<std::unique_ptr<File>>
+  loadFile(std::unique_ptr<MemoryBuffer> mb,
+           const Registry &registry) const override {
+    std::unique_ptr<File> ret =
+        llvm::make_unique<MachOFile>(std::move(mb), &_ctx);
+    return std::move(ret);
   }
 
 private:
@@ -547,11 +548,12 @@ public:
     }
   }
 
-  std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb,
-                           const Registry &registry,
-                           std::unique_ptr<File> &result) const override {
-    result = llvm::make_unique<MachODylibFile>(std::move(mb), &_ctx);
-    return std::error_code();
+  ErrorOr<std::unique_ptr<File>>
+  loadFile(std::unique_ptr<MemoryBuffer> mb,
+           const Registry &registry) const override {
+    std::unique_ptr<File> ret =
+        llvm::make_unique<MachODylibFile>(std::move(mb), &_ctx);
+    return std::move(ret);
   }
 
 private:
index aa053bc..14f36d5 100644 (file)
@@ -1052,11 +1052,12 @@ public:
     return magic == llvm::sys::fs::file_magic::coff_object;
   }
 
-  std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb, const Registry &,
-                           std::unique_ptr<File> &result) const override {
+  ErrorOr<std::unique_ptr<File>> loadFile(std::unique_ptr<MemoryBuffer> mb,
+                                          const Registry &) const override {
     // Parse the memory buffer as PECOFF file.
-    result = llvm::make_unique<FileCOFF>(std::move(mb), _ctx);
-    return std::error_code();
+    std::unique_ptr<File> ret =
+        llvm::make_unique<FileCOFF>(std::move(mb), _ctx);
+    return std::move(ret);
   }
 
 private:
index 75d5807..a750e99 100644 (file)
@@ -367,12 +367,12 @@ public:
     return magic == llvm::sys::fs::file_magic::coff_import_library;
   }
 
-  std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb,
-                           const class Registry &,
-                           std::unique_ptr<File> &result) const override {
-    result = llvm::make_unique<FileImportLibrary>(std::move(mb),
-                                                  _ctx.getMachineType());
-    return std::error_code();
+  ErrorOr<std::unique_ptr<File>>
+  loadFile(std::unique_ptr<MemoryBuffer> mb,
+           const class Registry &) const override {
+    std::unique_ptr<File> ret = llvm::make_unique<FileImportLibrary>(
+        std::move(mb), _ctx.getMachineType());
+    return std::move(ret);
   }
 
 private:
index d6863f3..4144349 100644 (file)
@@ -1294,9 +1294,9 @@ public:
     return ext.equals(".objtxt") || ext.equals(".yaml");
   }
 
-  std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb,
-                           const class Registry &,
-                           std::unique_ptr<File> &result) const override {
+  ErrorOr<std::unique_ptr<File>>
+  loadFile(std::unique_ptr<MemoryBuffer> mb,
+           const class Registry &) const override {
     // Create YAML Input Reader.
     YamlContext yamlContext;
     yamlContext._registry = &_registry;
@@ -1318,8 +1318,7 @@ public:
     File *f = const_cast<File *>(file);
     f->setLastError(std::error_code());
     f->setSharedMemoryBuffer(smb);
-    result = std::unique_ptr<File>(f);
-    return make_error_code(lld::YamlReaderError::success);
+    return std::unique_ptr<File>(f);
   }
 
 private: