[Lldb-commits] [PATCH] D43912: [Symbol] Add InvalidType, a force-checked recoverable error

Zachary Turner via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed Feb 28 15:01:34 PST 2018


zturner added inline comments.


================
Comment at: source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp:382-387
+  if (llvm::Error E = user_type_or_err.takeError()) {
+    std::string Reason = llvm::toString(std::move(E));
     if (log)
-      log->Printf("Persistent variable's type wasn't copied successfully");
+      log->Printf("%s", Reason.c_str());
     return false;
   }
----------------
I wonder if we need a macro like 

```
#define RETURN_IF_UNEXPECTED(item, ret_val, log_categories)           \
  if (auto E = item.takeError()) {                                    \
    std::string Reason = llvm::toString(std::move(E));                \
    Log *log(lldb_private::GetLogIfAllCategoriesSet(log_categories)); \
    if (log) \
      log->Printf("%s", Reason.c_str());
    return ret_val;
  }
```

then we say:

```
RETURN_IF_UNEXPECTED(user_type_or_err, false, LIBLLDB_LOG_EXPRESSIONS);
```

I don't have too strong of an opinion, but as this pattern becomes more pervasive, it's annoying to have to write out 5-6 lines of code every time you call a function that returns an `Expected<T>`.


https://reviews.llvm.org/D43912





More information about the lldb-commits mailing list