@@ -28,67 +28,6 @@ namespace lldb_private {
2828
2929const char *ExpressionResultAsCString (lldb::ExpressionResults result);
3030
31- // / Going a bit against the spirit of llvm::Error,
32- // / lldb_private::Status need to store errors long-term and sometimes
33- // / copy them. This base class defines an interface for this
34- // / operation.
35- class CloneableError
36- : public llvm::ErrorInfo<CloneableError, llvm::ErrorInfoBase> {
37- public:
38- using llvm::ErrorInfo<CloneableError, llvm::ErrorInfoBase>::ErrorInfo;
39- CloneableError () : ErrorInfo() {}
40- virtual std::unique_ptr<CloneableError> Clone () const = 0;
41- static char ID;
42- };
43-
44- // / Common base class for all error-code errors.
45- class CloneableECError
46- : public llvm::ErrorInfo<CloneableECError, CloneableError> {
47- public:
48- using llvm::ErrorInfo<CloneableECError, CloneableError>::ErrorInfo;
49- std::error_code convertToErrorCode () const override { return EC; }
50- void log (llvm::raw_ostream &OS) const override { OS << EC.message (); }
51- static char ID;
52-
53- protected:
54- CloneableECError () = delete ;
55- CloneableECError (std::error_code ec) : ErrorInfo(), EC(ec) {}
56- std::error_code EC;
57- };
58- // / FIXME: Move these declarations closer to where they're used.
59- class MachKernelError
60- : public llvm::ErrorInfo<MachKernelError, CloneableECError> {
61- public:
62- using llvm::ErrorInfo<MachKernelError, CloneableECError>::ErrorInfo;
63- MachKernelError (std::error_code ec) : ErrorInfo(ec) {}
64- std::string message () const override ;
65- std::unique_ptr<CloneableError> Clone () const override ;
66- static char ID;
67- };
68-
69- class Win32Error : public llvm ::ErrorInfo<Win32Error, CloneableECError> {
70- public:
71- using llvm::ErrorInfo<Win32Error, CloneableECError>::ErrorInfo;
72- Win32Error (std::error_code ec, const llvm::Twine &msg = {}) : ErrorInfo(ec) {}
73- std::string message () const override ;
74- std::unique_ptr<CloneableError> Clone () const override ;
75- static char ID;
76- };
77-
78- class ExpressionError
79- : public llvm::ErrorInfo<ExpressionError, CloneableECError> {
80- public:
81- using llvm::ErrorInfo<ExpressionError, CloneableECError>::ErrorInfo;
82- ExpressionError (std::error_code ec, std::string msg = {})
83- : ErrorInfo(ec), m_string(msg) {}
84- std::unique_ptr<CloneableError> Clone () const override ;
85- std::string message () const override { return m_string; }
86- static char ID;
87-
88- protected:
89- std::string m_string;
90- };
91-
9231// / \class Status Status.h "lldb/Utility/Status.h" An error handling class.
9332// /
9433// / This class is designed to be able to hold any error code that can be
@@ -161,7 +100,9 @@ class Status {
161100 }
162101
163102 static Status FromExpressionError (lldb::ExpressionResults result,
164- std::string msg);
103+ std::string msg) {
104+ return Status (result, lldb::eErrorTypeExpression, msg);
105+ }
165106
166107 // / Set the current error to errno.
167108 // /
@@ -174,7 +115,6 @@ class Status {
174115 const Status &operator =(Status &&);
175116 // / Avoid using this in new code. Migrate APIs to llvm::Expected instead.
176117 static Status FromError (llvm::Error error);
177-
178118 // / FIXME: Replace this with a takeError() method.
179119 llvm::Error ToError () const ;
180120 // / Don't call this function in new code. Instead, redesign the API
@@ -209,20 +149,12 @@ class Status {
209149
210150 // / Access the error value.
211151 // /
212- // / If the internally stored \ref llvm::Error is an \ref
213- // / llvm::ErrorList then this returns the error value of the first
214- // / error.
215- // /
216152 // / \return
217153 // / The error value.
218154 ValueType GetError () const ;
219155
220156 // / Access the error type.
221157 // /
222- // / If the internally stored \ref llvm::Error is an \ref
223- // / llvm::ErrorList then this returns the error value of the first
224- // / error.
225- // /
226158 // / \return
227159 // / The error type enumeration value.
228160 lldb::ErrorType GetType () const ;
@@ -238,9 +170,12 @@ class Status {
238170 bool Success () const ;
239171
240172protected:
241- Status (llvm::Error error) : m_error(std::move(error)) {}
242- llvm::Error m_error;
243- // / TODO: Replace this with just calling toString(m_error).
173+ Status (llvm::Error error);
174+ // / Status code as an integer value.
175+ ValueType m_code = 0 ;
176+ // / The type of the above error code.
177+ lldb::ErrorType m_type = lldb::eErrorTypeInvalid;
178+ // / A string representation of the error code.
244179 mutable std::string m_string;
245180};
246181
0 commit comments