================
@@ -181,29 +226,68 @@ const char *Status::AsCString(const char 
*default_error_str) const {
 
 // Clear the error and any cached error string that it might contain.
 void Status::Clear() {
-  m_code = 0;
-  m_type = eErrorTypeInvalid;
-  m_string.clear();
+  if (m_error)
+    LLDB_LOG_ERRORV(GetLog(LLDBLog::API), std::move(m_error),
+                    "dropping error {0}");
+  m_error = llvm::Error::success();
+  llvm::consumeError(std::move(m_error));
----------------
labath wrote:

Is there some invariant that holds (or that we could make hold) for the state 
of the checked flag in m_error? E.g., that it is always clear (until we reach 
the destructor), or that it is (should be) set immediately upon construction.

I'm asking this because I think that the flag is almost always clear, except 
that it is set in this function. But if you're doing that just so you can 
assign the error in operator=, then you could just set the flag there, and 
always maintain the invariant.

https://github.com/llvm/llvm-project/pull/106774
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to