diff options
author | Adrian Prantl <aprantl@apple.com> | 2024-09-18 14:54:49 -0700 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2024-09-19 10:07:13 -0700 |
commit | 104b249c236578d298384416c495ff7310b97f4d (patch) | |
tree | 983c528420aeae17894a61b7ec25ede55be812db /llvm/unittests/Support/VirtualFileSystemTest.cpp | |
parent | 1f8a3286e065b8cb82628db0d335b3e82b9373fd (diff) | |
download | llvm-104b249c236578d298384416c495ff7310b97f4d.zip llvm-104b249c236578d298384416c495ff7310b97f4d.tar.gz llvm-104b249c236578d298384416c495ff7310b97f4d.tar.bz2 |
[lldb] Change the implementation of Status to store an llvm::Error (NFC) (#106774)
(based on a conversation I had with @labath yesterday in
https://github.com/llvm/llvm-project/pull/106442)
Most APIs that currently vend a Status would be better served by
returning llvm::Expected<> instead. If possibles APIs should be
refactored to avoid Status. The only legitimate long-term uses of Status
are objects that need to store an error for a long time (which should be
questioned as a design decision, too).
This patch makes the transition to llvm::Error easier by making the
places that cannot switch to llvm::Error explicit: They are marked with
a call to Status::clone(). Every other API can and should be refactored
to use llvm::Expected. In the end Status should only be used in very few
places.
Whenever an unchecked Error is dropped by Status it logs this to the
verbose API channel.
Implementation notes:
This patch introduces two new kinds of error_category as well as new
llvm::Error types. Here is the mapping of lldb::ErrorType to
llvm::Errors:
```
(eErrorTypeInvalid)
eErrorTypeGeneric llvm::StringError
eErrorTypePOSIX llvm::ECError
eErrorTypeMachKernel MachKernelError
eErrorTypeExpression llvm::ErrorList<ExpressionError>
eErrorTypeWin32 Win32Error
```
Relanding with built-in cloning support for llvm::ECError.
Diffstat (limited to 'llvm/unittests/Support/VirtualFileSystemTest.cpp')
0 files changed, 0 insertions, 0 deletions