================
@@ -319,40 +319,49 @@ 
ValueObjectSynthetic::GetChildMemberWithName(llvm::StringRef name,
                                              bool can_create) {
   UpdateValueIfNeeded();
 
-  uint32_t index = GetIndexOfChildWithName(name);
+  auto index_or_err = GetIndexOfChildWithName(name);
 
-  if (index == UINT32_MAX)
+  if (!index_or_err) {
+    llvm::consumeError(index_or_err.takeError());
     return lldb::ValueObjectSP();
+  }
 
-  return GetChildAtIndex(index, can_create);
+  return GetChildAtIndex(*index_or_err, can_create);
 }
 
-size_t ValueObjectSynthetic::GetIndexOfChildWithName(llvm::StringRef name_ref) 
{
+llvm::Expected<size_t>
+ValueObjectSynthetic::GetIndexOfChildWithName(llvm::StringRef name_ref) {
   UpdateValueIfNeeded();
 
   ConstString name(name_ref);
 
-  uint32_t found_index = UINT32_MAX;
-  bool did_find;
+  std::optional<uint32_t> found_index = std::nullopt;
   {
     std::lock_guard<std::mutex> guard(m_child_mutex);
     auto name_to_index = m_name_toindex.find(name.GetCString());
-    did_find = name_to_index != m_name_toindex.end();
-    if (did_find)
+    if (name_to_index != m_name_toindex.end())
       found_index = name_to_index->second;
   }
 
-  if (!did_find && m_synth_filter_up != nullptr) {
-    uint32_t index = m_synth_filter_up->GetIndexOfChildWithName(name);
-    if (index == UINT32_MAX)
-      return index;
+  if (!found_index && m_synth_filter_up != nullptr) {
+    auto index_or_err = m_synth_filter_up->GetIndexOfChildWithName(name);
+    if (!index_or_err)
+      return index_or_err.takeError();
     std::lock_guard<std::mutex> guard(m_child_mutex);
-    m_name_toindex[name.GetCString()] = index;
-    return index;
-  } else if (!did_find && m_synth_filter_up == nullptr)
-    return UINT32_MAX;
-  else /*if (iter != m_name_toindex.end())*/
-    return found_index;
+    m_name_toindex[name.GetCString()] = *index_or_err;
+    return *index_or_err;
+  } else if (!found_index && m_synth_filter_up == nullptr) {
+    return llvm::createStringError(
+        "'SyntheticChildrenFrontEnd::ValueObjectSynthetic' cannot find index "
+        "of child '%s'. m_synth_filter_up is null.",
+        name.AsCString());
+  } else if (found_index)
+    return *found_index;
+
+  return llvm::createStringError(
+      "'SyntheticChildrenFrontEnd::ValueObjectSynthetic' cannot find index "
----------------
Michael137 wrote:

```suggestion
      "'ValueObjectSynthetic' cannot find index "
```

https://github.com/llvm/llvm-project/pull/136693
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to