[Lldb-commits] [lldb] draft: [lldb] Upgrade ValueObject::GetData to return llvm::Expected (PR #130516)

Julius Alexandre via lldb-commits lldb-commits at lists.llvm.org
Sat Mar 22 05:53:59 PDT 2025


================
@@ -523,13 +522,11 @@ class EntityVariableBase : public Materializer::Entity {
           return;
         }
       } else {
-        DataExtractor data;
-        Status extract_error;
-        valobj_sp->GetData(data, extract_error);
-        if (!extract_error.Success()) {
+        auto data_or_err = valobj_sp->GetData();
+        if (auto error = data_or_err.takeError()) {
           err = Status::FromErrorStringWithFormat(
               "couldn't get the value of %s: %s", GetName().AsCString(),
-              extract_error.AsCString());
+              llvm::toString(std::move(error)).c_str());
----------------
wizardengineer wrote:

understood, there's some case where I get an error like 

```cpp
error: calling a protected constructor of class 'lldb_private::Status'
1854 |       return llvm::joinErrors(llvm::createStringError(
```

I did something like this (in the case of getting that error):
```cpp
    if (auto error = data_or_err.takeError()) {
      auto combined_err = llvm::joinErrors(llvm::createStringError(
          "Couldn't convert return value to raw data"),
          std::move(error));
      return Status::FromErrorString(llvm::toString(std::move(combined_err)).c_str());
    }
```

https://github.com/llvm/llvm-project/pull/130516


More information about the lldb-commits mailing list