aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
diff options
context:
space:
mode:
authorCharles Zablit <c_zablit@apple.com>2025-04-30 12:44:19 +0200
committerGitHub <noreply@github.com>2025-04-30 11:44:19 +0100
commitb3d130279f5c59a82d48d4647bef626ac4e202cf (patch)
tree0da0af37fec618f40d3b0b5a7a593d554308fdd8 /lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
parent92195f6fc873cd27a5aa0852252dfe44ccdc6ea0 (diff)
downloadllvm-b3d130279f5c59a82d48d4647bef626ac4e202cf.zip
llvm-b3d130279f5c59a82d48d4647bef626ac4e202cf.tar.gz
llvm-b3d130279f5c59a82d48d4647bef626ac4e202cf.tar.bz2
[lldb] Upgrade `GetIndexOfChildWithName` to use `llvm::Expected` (#136693)
This patch replaces the use of `UINT32_MAX` as the error return value of `GetIndexOfChildWithName` with `llvm::Expected`. # Tasks to do in another PR 1. Replace `CalculateNumChildrenIgnoringErrors` with `CalculateNumChildren`. See [this comment](https://github.com/llvm/llvm-project/pull/136693#discussion_r2056319358). 2. Update `lldb_private::formatters::ExtractIndexFromString` to use `llvm::Expected`. See [this comment](https://github.com/llvm/llvm-project/pull/136693#discussion_r2054217536). 3. Create a new class which carries both user and internal errors. See [this comment](https://github.com/llvm/llvm-project/pull/136693#discussion_r2056439608).
Diffstat (limited to 'lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp')
-rw-r--r--lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
index a97264f..02113ba 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/LibStdcpp.cpp
@@ -49,7 +49,7 @@ public:
lldb::ChildCacheState Update() override;
- size_t GetIndexOfChildWithName(ConstString name) override;
+ llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override;
private:
ExecutionContextRef m_exe_ctx_ref;
@@ -68,7 +68,8 @@ public:
lldb::ChildCacheState Update() override;
- size_t GetIndexOfChildWithName(ConstString name) override;
+ llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override;
+
private:
// The lifetime of a ValueObject and all its derivative ValueObjects
@@ -145,13 +146,15 @@ LibstdcppMapIteratorSyntheticFrontEnd::GetChildAtIndex(uint32_t idx) {
return lldb::ValueObjectSP();
}
-size_t LibstdcppMapIteratorSyntheticFrontEnd::GetIndexOfChildWithName(
+llvm::Expected<size_t>
+LibstdcppMapIteratorSyntheticFrontEnd::GetIndexOfChildWithName(
ConstString name) {
if (name == "first")
return 0;
if (name == "second")
return 1;
- return UINT32_MAX;
+ return llvm::createStringError("Type has no child named '%s'",
+ name.AsCString());
}
SyntheticChildrenFrontEnd *
@@ -226,11 +229,12 @@ VectorIteratorSyntheticFrontEnd::GetChildAtIndex(uint32_t idx) {
return lldb::ValueObjectSP();
}
-size_t VectorIteratorSyntheticFrontEnd::GetIndexOfChildWithName(
- ConstString name) {
+llvm::Expected<size_t>
+VectorIteratorSyntheticFrontEnd::GetIndexOfChildWithName(ConstString name) {
if (name == "item")
return 0;
- return UINT32_MAX;
+ return llvm::createStringError("Type has no child named '%s'",
+ name.AsCString());
}
bool lldb_private::formatters::LibStdcppStringSummaryProvider(
@@ -409,13 +413,14 @@ lldb::ChildCacheState LibStdcppSharedPtrSyntheticFrontEnd::Update() {
return lldb::ChildCacheState::eRefetch;
}
-size_t LibStdcppSharedPtrSyntheticFrontEnd::GetIndexOfChildWithName(
- ConstString name) {
+llvm::Expected<size_t>
+LibStdcppSharedPtrSyntheticFrontEnd::GetIndexOfChildWithName(ConstString name) {
if (name == "pointer")
return 0;
if (name == "object" || name == "$$dereference$$")
return 1;
- return UINT32_MAX;
+ return llvm::createStringError("Type has no child named '%s'",
+ name.AsCString());
}
SyntheticChildrenFrontEnd *