================
@@ -37,49 +39,75 @@ class raw_ostream;
using namespace lldb;
using namespace lldb_private;
-Status::Status() {}
+char MachKernelError::ID;
+char Win32Error::ID;
+char ExpressionError::ID;
+
+namespace {
+/// A std::error_code category for eErrorTypeGeneric.
+class GenericCategory : public std::error_category {
+ const char *name() const override { return "LLDBGenericCategory"; }
+ std::string message(int __ev) const override { return "generic LLDB error";
};
+};
+GenericCategory &generic_category() {
+ static GenericCategory g_generic_category;
+ return g_generic_category;
+}
+
+/// A std::error_code category for eErrorTypeExpression.
+class ExpressionCategory : public std::error_category {
+ const char *name() const override { return "LLDBExpressionCategory"; }
+ std::string message(int __ev) const override {
+ return
ExecutionResultAsCString(static_cast<lldb::ExpressionResults>(__ev));
+ };
+};
+ExpressionCategory &expression_category() {
+ static ExpressionCategory g_expression_category;
+ return g_expression_category;
+}
+} // namespace
+
+Status::Status() : m_error(llvm::Error::success()) {}
Status::Status(ValueType err, ErrorType type, std::string msg)
- : m_code(err), m_type(type), m_string(std::move(msg)) {}
+ : m_error(
+ type == eErrorTypeMachKernel
+ ? llvm::make_error<MachKernelError>(
+ std::error_code(err, std::system_category()), msg)
+ : (type == eErrorTypePOSIX
+ ? llvm::errorCodeToError(
+ std::error_code(err, std::generic_category()))
+ : (type == eErrorTypeWin32
+ ? llvm::make_error<Win32Error>(
+ std::error_code(err, std::system_category()),
+ msg)
+ : llvm::createStringError(
+ std::move(msg),
+ std::error_code(err, generic_category())))))
{
----------------
JDevlieghere wrote:
lol
https://github.com/llvm/llvm-project/pull/106774
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits