================ @@ -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