[Lldb-commits] [PATCH] D41584: Check existence of each required component during construction of LLVMCDisassembler.

Pavel Labath via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Tue Jan 9 04:31:45 PST 2018


labath requested changes to this revision.
labath added a comment.
This revision now requires changes to proceed.

I think this makes the code hard to read. A much better approach would be to use `Expected<T>` + factory function pattern. So you would have something like:

  Expected<unique_ptr<LLVMCDisassembler>> LLVMCDisassembler::Create(...) {
    do_first_thing_that_can_fail(...);
    if (first_thing_failed)
      return make_string_error("First thing failed");
    do_second_thing_that_can_fail();
    ...
    return make_unique<LLVMCDisassembler>(...); // can't fail
  }

I think this is much more readable than the lambda approach, and it also allows you to get rid of the IsValid() function, as we only construct valid objects.


https://reviews.llvm.org/D41584





More information about the lldb-commits mailing list