[PATCH] D88113: [llvm-objcopy][NFC] refactor error handling. part 1.

Alexey Lapshin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 24 01:05:00 PDT 2020


avl added inline comments.


================
Comment at: llvm/tools/llvm-objcopy/MachO/MachOReader.cpp:89
     if (!SecRef)
-      reportError(MachOObj.getFileName(), SecRef.takeError());
+      return createStringError(errc::invalid_argument,
+                               "'" + MachOObj.getFileName() +
----------------
alexshap wrote:
> jhenderson wrote:
> > avl wrote:
> > > jhenderson wrote:
> > > > Can you use the error code associated with `SecRef` instead of `errc::invalid_argument` here?
> > > As far as I understand that could be done in that way:
> > > 
> > > 
> > > ```
> > > inline Error errorWithContext(StringRef Context, Error E) {
> > >   assert(E);
> > >   std::string Buf;
> > >   raw_string_ostream OS(Buf);
> > >   Optional<std::error_code> EC;
> > >   handleAllErrors(std::move(E), [&](const ErrorInfoBase &EI) {
> > >     OS << "'" + Context + "': ";
> > >     if (!EC)
> > >       EC = EI.convertToErrorCode();
> > >     EI.log(OS);
> > >     OS << "\n";
> > >   });
> > >   OS.flush();
> > > 
> > >   return createStringError(*EC, Buf);
> > > }
> > > ```
> > > 
> > > but you`ve asked me to not create a special routine for that.
> > I misremembered how the interface worked. There's an `errorToErrorCode()` function, but that consumes the input `Error`, which we don't want. Leave it as-is.
> I'm wondering - why not simply bubble up the error ?
My guess is that original intention is to add file name MachOObj.getFileName to have better reporting. If we would like to add filename then we could not bubble up original error.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D88113/new/

https://reviews.llvm.org/D88113



More information about the llvm-commits mailing list