llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: Charles Zablit (charles-zablit) <details> <summary>Changes</summary> This PR is in continuation of https://github.com/llvm/llvm-project/pull/136693. It upgrades `ExtractIndexFromString` to use `llvm::Expected`. --- Patch is 28.14 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/138297.diff 21 Files Affected: - (modified) lldb/include/lldb/DataFormatters/FormattersHelpers.h (+1-1) - (modified) lldb/source/DataFormatters/FormattersHelpers.cpp (+6-5) - (modified) lldb/source/DataFormatters/VectorType.cpp (+8-4) - (modified) lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp (+5-3) - (modified) lldb/source/Plugins/Language/CPlusPlus/GenericOptional.cpp (+5-3) - (modified) lldb/source/Plugins/Language/CPlusPlus/LibCxxInitializerList.cpp (+4-3) - (modified) lldb/source/Plugins/Language/CPlusPlus/LibCxxList.cpp (+5-3) - (modified) lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp (+4-3) - (modified) lldb/source/Plugins/Language/CPlusPlus/LibCxxProxyArray.cpp (+4-3) - (modified) lldb/source/Plugins/Language/CPlusPlus/LibCxxSliceArray.cpp (+5-3) - (modified) lldb/source/Plugins/Language/CPlusPlus/LibCxxSpan.cpp (+4-3) - (modified) lldb/source/Plugins/Language/CPlusPlus/LibCxxTuple.cpp (+5-3) - (modified) lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp (+4-3) - (modified) lldb/source/Plugins/Language/CPlusPlus/LibCxxValarray.cpp (+4-3) - (modified) lldb/source/Plugins/Language/CPlusPlus/LibCxxVariant.cpp (+5-3) - (modified) lldb/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp (+12-7) - (modified) lldb/source/Plugins/Language/CPlusPlus/LibStdcppTuple.cpp (+4-3) - (modified) lldb/source/Plugins/Language/ObjC/NSArray.cpp (+16-8) - (modified) lldb/source/Plugins/Language/ObjC/NSDictionary.cpp (+41-21) - (modified) lldb/source/Plugins/Language/ObjC/NSIndexPath.cpp (+8-4) - (modified) lldb/source/Plugins/Language/ObjC/NSSet.cpp (+24-12) ``````````diff diff --git a/lldb/include/lldb/DataFormatters/FormattersHelpers.h b/lldb/include/lldb/DataFormatters/FormattersHelpers.h index a98042fd40f93..82aae705e2a59 100644 --- a/lldb/include/lldb/DataFormatters/FormattersHelpers.h +++ b/lldb/include/lldb/DataFormatters/FormattersHelpers.h @@ -53,7 +53,7 @@ void AddFilter(TypeCategoryImpl::SharedPointer category_sp, llvm::StringRef type_name, ScriptedSyntheticChildren::Flags flags, bool regex = false); -size_t ExtractIndexFromString(const char *item_name); +llvm::Expected<size_t> ExtractIndexFromString(const char *item_name); Address GetArrayAddressOrPointerValue(ValueObject &valobj); diff --git a/lldb/source/DataFormatters/FormattersHelpers.cpp b/lldb/source/DataFormatters/FormattersHelpers.cpp index 085ed3d0a2f29..5e29794c291be 100644 --- a/lldb/source/DataFormatters/FormattersHelpers.cpp +++ b/lldb/source/DataFormatters/FormattersHelpers.cpp @@ -97,18 +97,19 @@ void lldb_private::formatters::AddFilter( category_sp->AddTypeFilter(type_name, match_type, filter_sp); } -size_t lldb_private::formatters::ExtractIndexFromString(const char *item_name) { +llvm::Expected<size_t> +lldb_private::formatters::ExtractIndexFromString(const char *item_name) { if (!item_name || !*item_name) - return UINT32_MAX; + return llvm::createStringError("String has no item named '%s'", item_name); if (*item_name != '[') - return UINT32_MAX; + return llvm::createStringError("String has no item named '%s'", item_name); item_name++; char *endptr = nullptr; unsigned long int idx = ::strtoul(item_name, &endptr, 0); if (idx == 0 && endptr == item_name) - return UINT32_MAX; + return llvm::createStringError("String has no item named '%s'", item_name); if (idx == ULONG_MAX) - return UINT32_MAX; + return llvm::createStringError("String has no item named '%s'", item_name); return idx; } diff --git a/lldb/source/DataFormatters/VectorType.cpp b/lldb/source/DataFormatters/VectorType.cpp index eab2612d1e941..3fa616b9d9b14 100644 --- a/lldb/source/DataFormatters/VectorType.cpp +++ b/lldb/source/DataFormatters/VectorType.cpp @@ -270,10 +270,14 @@ class VectorTypeSyntheticFrontEnd : public SyntheticChildrenFrontEnd { } llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override { - const char *item_name = name.GetCString(); - uint32_t idx = ExtractIndexFromString(item_name); - if (idx == UINT32_MAX || - (idx < UINT32_MAX && idx >= CalculateNumChildrenIgnoringErrors())) + auto idx_or_err = ExtractIndexFromString(name.AsCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + uint32_t idx = *idx_or_err; + if (idx >= CalculateNumChildrenIgnoringErrors()) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; diff --git a/lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp b/lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp index 234471d5ba518..ebcac0a48bd30 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp @@ -29,11 +29,13 @@ class GenericBitsetFrontEnd : public SyntheticChildrenFrontEnd { GenericBitsetFrontEnd(ValueObject &valobj, StdLib stdlib); llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override { - size_t idx = formatters::ExtractIndexFromString(name.GetCString()); - if (idx == UINT32_MAX) + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); - return idx; + } + return *idx_or_err; } lldb::ChildCacheState Update() override; diff --git a/lldb/source/Plugins/Language/CPlusPlus/GenericOptional.cpp b/lldb/source/Plugins/Language/CPlusPlus/GenericOptional.cpp index 6f1b2ee3fd9e3..bfcc15ae805e7 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/GenericOptional.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/GenericOptional.cpp @@ -39,11 +39,13 @@ class GenericOptionalFrontend : public SyntheticChildrenFrontEnd { llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override { if (name == "$$dereference$$") return 0; - size_t idx = formatters::ExtractIndexFromString(name.GetCString()); - if (idx == UINT32_MAX) + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); - return idx; + } + return *idx_or_err; } llvm::Expected<uint32_t> CalculateNumChildren() override { diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxInitializerList.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxInitializerList.cpp index e8a886dd71821..04891d7d094f3 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxInitializerList.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxInitializerList.cpp @@ -108,12 +108,13 @@ lldb_private::formatters::LibcxxInitializerListSyntheticFrontEnd:: return llvm::createStringError("Type has no child named '%s'", name.AsCString()); } - size_t idx = ExtractIndexFromString(name.GetCString()); - if (idx == UINT32_MAX) { + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); } - return idx; + return *idx_or_err; } lldb_private::SyntheticChildrenFrontEnd * diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxList.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxList.cpp index ea18c02ee6591..9d4773c56b3e3 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxList.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxList.cpp @@ -107,11 +107,13 @@ class ListIterator { class AbstractListFrontEnd : public SyntheticChildrenFrontEnd { public: llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override { - size_t idx = ExtractIndexFromString(name.GetCString()); - if (idx == UINT32_MAX) + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); - return idx; + } + return *idx_or_err; } lldb::ChildCacheState Update() override; diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp index fec2d6f29ca54..9c3694e2448fc 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp @@ -395,12 +395,13 @@ lldb_private::formatters::LibcxxStdMapSyntheticFrontEnd::Update() { llvm::Expected<size_t> lldb_private::formatters::LibcxxStdMapSyntheticFrontEnd:: GetIndexOfChildWithName(ConstString name) { - size_t idx = ExtractIndexFromString(name.GetCString()); - if (idx == UINT32_MAX) { + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); } - return idx; + return *idx_or_err; } SyntheticChildrenFrontEnd * diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxProxyArray.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxProxyArray.cpp index 41fc704d5886f..a4ded6e0d7d85 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxProxyArray.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxProxyArray.cpp @@ -179,12 +179,13 @@ lldb_private::formatters::LibcxxStdProxyArraySyntheticFrontEnd:: if (!m_base) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); - size_t idx = ExtractIndexFromString(name.GetCString()); - if (idx == UINT32_MAX) { + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); } - return idx; + return *idx_or_err; } lldb_private::SyntheticChildrenFrontEnd * diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxSliceArray.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxSliceArray.cpp index 1c4d8509374f1..309d91ae02ecb 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxSliceArray.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxSliceArray.cpp @@ -150,11 +150,13 @@ lldb_private::formatters::LibcxxStdSliceArraySyntheticFrontEnd:: if (!m_start) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); - size_t idx = ExtractIndexFromString(name.GetCString()); - if (idx == UINT32_MAX) + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); - return idx; + } + return *idx_or_err; } lldb_private::SyntheticChildrenFrontEnd * diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxSpan.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxSpan.cpp index 43721e4b41fb8..26e8c48b4f8eb 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxSpan.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxSpan.cpp @@ -133,12 +133,13 @@ llvm::Expected<size_t> lldb_private::formatters:: if (!m_start) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); - size_t idx = ExtractIndexFromString(name.GetCString()); - if (idx == UINT32_MAX) { + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); } - return idx; + return *idx_or_err; } lldb_private::SyntheticChildrenFrontEnd * diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxTuple.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxTuple.cpp index 270aad5ea9310..235a26da50a5f 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxTuple.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxTuple.cpp @@ -21,11 +21,13 @@ class TupleFrontEnd: public SyntheticChildrenFrontEnd { } llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override { - size_t idx = formatters::ExtractIndexFromString(name.GetCString()); - if (idx == UINT32_MAX) + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); - return idx; + } + return *idx_or_err; } lldb::ChildCacheState Update() override; diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp index 313664e691c9f..de37aeda25168 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp @@ -294,12 +294,13 @@ lldb_private::formatters::LibcxxStdUnorderedMapSyntheticFrontEnd::Update() { llvm::Expected<size_t> lldb_private::formatters::LibcxxStdUnorderedMapSyntheticFrontEnd:: GetIndexOfChildWithName(ConstString name) { - size_t idx = ExtractIndexFromString(name.GetCString()); - if (idx == UINT32_MAX) { + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); } - return idx; + return *idx_or_err; } SyntheticChildrenFrontEnd * diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxValarray.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxValarray.cpp index 172df6358789e..4c87e167589da 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxValarray.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxValarray.cpp @@ -129,12 +129,13 @@ lldb_private::formatters::LibcxxStdValarraySyntheticFrontEnd:: if (!m_start || !m_finish) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); - size_t idx = ExtractIndexFromString(name.GetCString()); - if (idx == UINT32_MAX) { + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); } - return idx; + return *idx_or_err; } lldb_private::SyntheticChildrenFrontEnd * diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxVariant.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxVariant.cpp index 2419683a4d713..12071321189b9 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxVariant.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxVariant.cpp @@ -203,11 +203,13 @@ class VariantFrontEnd : public SyntheticChildrenFrontEnd { } llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override { - size_t index = formatters::ExtractIndexFromString(name.GetCString()); - if (index == UINT32_MAX) + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); - return index; + } + return *idx_or_err; } lldb::ChildCacheState Update() override; diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp index abbf1ed935b6b..228647b8961b1 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxVector.cpp @@ -170,12 +170,13 @@ lldb_private::formatters::LibcxxStdVectorSyntheticFrontEnd:: if (!m_start || !m_finish) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); - size_t index = formatters::ExtractIndexFromString(name.GetCString()); - if (index == UINT32_MAX) { + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); } - return index; + return *idx_or_err; } lldb_private::formatters::LibcxxVectorBoolSyntheticFrontEnd:: @@ -273,10 +274,14 @@ lldb_private::formatters::LibcxxVectorBoolSyntheticFrontEnd:: if (!m_count || !m_base_data_address) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); - const char *item_name = name.GetCString(); - uint32_t idx = ExtractIndexFromString(item_name); - if (idx == UINT32_MAX || - (idx < UINT32_MAX && idx >= CalculateNumChildrenIgnoringErrors())) + auto idx_or_err = ExtractIndexFromString(name.AsCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + uint32_t idx = *idx_or_err; + if (idx >= CalculateNumChildrenIgnoringErrors()) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibStdcppTuple.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibStdcppTuple.cpp index cae5aa379b245..4f05dc1934958 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibStdcppTuple.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibStdcppTuple.cpp @@ -98,12 +98,13 @@ LibStdcppTupleSyntheticFrontEnd::CalculateNumChildren() { llvm::Expected<size_t> LibStdcppTupleSyntheticFrontEnd::GetIndexOfChildWithName(ConstString name) { - size_t index = formatters::ExtractIndexFromString(name.GetCString()); - if (index == UINT32_MAX) { + auto idx_or_err = formatters::ExtractIndexFromString(name.GetCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); return llvm::createStringError("Type has no child named '%s'", name.AsCString()); } - return index; + return *idx_or_err; } SyntheticChildrenFrontEnd * diff --git a/lldb/source/Plugins/Language/ObjC/NSArray.cpp b/lldb/source/Plugins/Language/ObjC/NSArray.cpp index 5e72bd5a6bab6..465639a21d943 100644 --- a/lldb/source/Plugins/Language/ObjC/NSArray.cpp +++ b/lldb/source/Plugins/Language/ObjC/NSArray.cpp @@ -528,10 +528,14 @@ lldb_private::formatters::GenericNSArrayMSyntheticFrontEnd<D32, D64>::Update() { llvm::Expected<size_t> lldb_private::formatters::NSArrayMSyntheticFrontEndBase:: GetIndexOfChildWithName(ConstString name) { - const char *item_name = name.GetCString(); - size_t idx = ExtractIndexFromString(item_name); - if (idx == UINT32_MAX || - (idx < UINT32_MAX && idx >= CalculateNumChildrenIgnoringErrors())) + auto idx_or_err = ExtractIndexFromString(name.AsCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + uint32_t idx = *idx_or_err; + if (idx >= CalculateNumChildrenIgnoringErrors()) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; @@ -616,10 +620,14 @@ template <typename D32, typename D64, bool Inline> llvm::Expected<size_t> lldb_private::formatters::GenericNSArrayISyntheticFrontEnd< D32, D64, Inline>::GetIndexOfChildWithName(ConstString name) { - const char *item_name = name.GetCString(); - uint32_t idx = ExtractIndexFromString(item_name); - if (idx == UINT32_MAX || - (idx < UINT32_MAX && idx >= CalculateNumChildrenIgnoringErrors())) + auto idx_or_err = ExtractIndexFromString(name.AsCString()); + if (!idx_or_err) { + llvm::consumeError(idx_or_err.takeError()); + return llvm::createStringError("Type has no child named '%s'", + name.AsCString()); + } + uint32_t idx = *idx_or_err; + if (idx >= CalculateNumChildrenIgnoringErrors()) return llvm::createStringError("Type has no child named '%s'", name.AsCString()); return idx; diff --git a/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp b/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp index b04b4610a0bf4..babf638a54ee6 100644 --- a/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp +++ b/lldb/source/Plugins/Language/ObjC/NSDictionary.cpp @@ -587,10 +587,14 @@ lldb_private::formatters::NSDictionaryISyntheticFrontEnd:: llvm::Expected<size_t> lldb_private::formatters:: NSDictionaryISyntheticFrontEnd::GetIndexOfChildWithName(ConstString name) { - const char *item_name = name.GetCString(); - uint32_t idx = ExtractIndexFromString(item_name); - if (idx == UINT32_MAX || - (idx < UINT32_MAX && idx >= CalculateNumChildrenIgnoringErrors())) + auto idx_or_err = ExtractIndexFromString(name.AsCString()); + if (!idx_or_err) { + llvm::c... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/138297 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits