================ @@ -94,25 +126,36 @@ Status Status::FromErrorStringWithFormat(const char *format, ...) { return Status(string); } -Status Status::FromError(llvm::Error error) { return Status(std::move(error)); } +Status Status::FromExpressionError(lldb::ExpressionResults result, + std::string msg) { + return Status(llvm::make_error<ExpressionError>( + std::error_code(result, expression_category()), msg)); +} -llvm::Error Status::ToError() const { - if (Success()) +/// Creates a deep copy of all known errors and converts all other +/// errors to a new llvm::StringError. +static llvm::Error CloneError(const llvm::Error &error) { + std::vector<std::unique_ptr<llvm::ErrorInfoBase>> info; + llvm::visitErrors(error, [&](const llvm::ErrorInfoBase &error) { + if (error.isA<CloneableError>()) + info.push_back(static_cast<const CloneableError *>(&error)->Clone()); ---------------- adrian-prantl wrote:
Ah, I didn't realize that `joinErrors(success(), e) == e` 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