Skip to content

Commit 4dda702

Browse files
fix tests
1 parent db12ff1 commit 4dda702

22 files changed

+160
-39
lines changed

lldb/source/DataFormatters/FormatterBytecode.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
#include "FormatterBytecode.h"
1010
#include "lldb/Utility/LLDBLog.h"
1111
#include "lldb/ValueObject/ValueObject.h"
12+
#include "lldb/ValueObject/ValueObjectConstResult.h"
1213
#include "llvm/ADT/StringExtras.h"
1314
#include "llvm/Support/DataExtractor.h"
1415
#include "llvm/Support/Format.h"
1516
#include "llvm/Support/FormatProviders.h"
1617
#include "llvm/Support/FormatVariadicDetails.h"
17-
#include <lldb/ValueObject/ValueObjectConstResult.h>
1818

1919
using namespace lldb;
2020
namespace lldb_private {
@@ -490,10 +490,10 @@ llvm::Error Interpret(std::vector<ControlStackElement> &control,
490490
TYPE_CHECK(Object, String);
491491
auto name = data.Pop<std::string>();
492492
POP_VALOBJ(valobj);
493-
auto index_or_err = valobj->GetIndexOfChildWithName(name);
494-
if (!index_or_err)
493+
if (auto index_or_err = valobj->GetIndexOfChildWithName(name))
494+
data.Push((uint64_t)*index_or_err);
495+
else
495496
return index_or_err.takeError();
496-
data.Push((uint64_t)*index_or_err);
497497
break;
498498
}
499499
case sel_get_type: {

lldb/source/DataFormatters/TypeSynthetic.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ TypeFilterImpl::FrontEnd::GetIndexOfChildWithName(ConstString name) {
6767
}
6868
}
6969
}
70-
return UINT32_MAX;
70+
return llvm::createStringError(
71+
"'SyntheticChildrenFrontEnd::FrontEnd' cannot find index of child '%s'",
72+
name.AsCString());
7173
}
7274

7375
std::string TypeFilterImpl::GetDescription() {

lldb/source/DataFormatters/VectorType.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,8 @@ class VectorTypeSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
272272
llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override {
273273
const char *item_name = name.GetCString();
274274
uint32_t idx = ExtractIndexFromString(item_name);
275-
if (idx < UINT32_MAX && idx >= CalculateNumChildrenIgnoringErrors())
275+
if (idx == UINT32_MAX ||
276+
(idx < UINT32_MAX && idx >= CalculateNumChildrenIgnoringErrors()))
276277
return llvm::createStringError(
277278
"'SyntheticChildrenFrontEnd::VectorTypeSyntheticFrontEnd' cannot "
278279
"find index of child '%s'",

lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,14 @@ class GenericBitsetFrontEnd : public SyntheticChildrenFrontEnd {
2929
GenericBitsetFrontEnd(ValueObject &valobj, StdLib stdlib);
3030

3131
llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override {
32-
return formatters::ExtractIndexFromString(name.GetCString());
32+
size_t idx = formatters::ExtractIndexFromString(name.GetCString());
33+
if (idx == UINT32_MAX) {
34+
return llvm::createStringError(
35+
"'SyntheticChildrenFrontend::GenericBitsetFrontEnd' cannot find "
36+
"index of child '%s'",
37+
name.AsCString());
38+
}
39+
return idx;
3340
}
3441

3542
lldb::ChildCacheState Update() override;

lldb/source/Plugins/Language/CPlusPlus/GenericOptional.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,14 @@ class GenericOptionalFrontend : public SyntheticChildrenFrontEnd {
3939
llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override {
4040
if (name == "$$dereference$$")
4141
return 0;
42-
return formatters::ExtractIndexFromString(name.GetCString());
42+
size_t idx = formatters::ExtractIndexFromString(name.GetCString());
43+
if (idx == UINT32_MAX) {
44+
return llvm::createStringError(
45+
"'SyntheticChildrenFrontend::GenericOptionalFrontend' cannot find "
46+
"index of child '%s'",
47+
name.AsCString());
48+
}
49+
return idx;
4350
}
4451

4552
llvm::Expected<uint32_t> CalculateNumChildren() override {

lldb/source/Plugins/Language/CPlusPlus/LibCxx.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -465,9 +465,10 @@ ExtractLibcxxStringInfo(ValueObject &valobj) {
465465
return {};
466466

467467
auto index_or_err = l->GetIndexOfChildWithName("__data_");
468-
if (!index_or_err)
468+
if (!index_or_err) {
469469
LLDB_LOG_ERROR(GetLog(LLDBLog::Types), index_or_err.takeError(), "{0}");
470-
return {};
470+
return {};
471+
}
471472

472473
StringLayout layout =
473474
*index_or_err == 0 ? StringLayout::DSC : StringLayout::CSD;

lldb/source/Plugins/Language/CPlusPlus/LibCxxInitializerList.cpp

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,20 @@ lldb_private::formatters::LibcxxInitializerListSyntheticFrontEnd::Update() {
103103
llvm::Expected<size_t>
104104
lldb_private::formatters::LibcxxInitializerListSyntheticFrontEnd::
105105
GetIndexOfChildWithName(ConstString name) {
106-
if (!m_start)
107-
return UINT32_MAX;
108-
return ExtractIndexFromString(name.GetCString());
106+
if (!m_start) {
107+
return llvm::createStringError(
108+
"'SyntheticChildrenFrontend::LibcxxInitializerListSyntheticFrontEnd' "
109+
"cannot find index of child '%s'",
110+
name.AsCString());
111+
}
112+
size_t idx = ExtractIndexFromString(name.GetCString());
113+
if (idx == UINT32_MAX) {
114+
return llvm::createStringError(
115+
"'SyntheticChildrenFrontend::LibcxxInitializerListSyntheticFrontEnd' "
116+
"cannot find index of child '%s'",
117+
name.AsCString());
118+
}
119+
return idx;
109120
}
110121

111122
lldb_private::SyntheticChildrenFrontEnd *

lldb/source/Plugins/Language/CPlusPlus/LibCxxList.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,14 @@ class ListIterator {
107107
class AbstractListFrontEnd : public SyntheticChildrenFrontEnd {
108108
public:
109109
llvm::Expected<size_t> GetIndexOfChildWithName(ConstString name) override {
110-
return ExtractIndexFromString(name.GetCString());
110+
size_t idx = ExtractIndexFromString(name.GetCString());
111+
if (idx == UINT32_MAX) {
112+
return llvm::createStringError(
113+
"'SyntheticChildrenFrontend::AbstractListFrontEnd' cannot find index "
114+
"of child '%s'",
115+
name.AsCString());
116+
}
117+
return idx;
111118
}
112119
lldb::ChildCacheState Update() override;
113120

lldb/source/Plugins/Language/CPlusPlus/LibCxxMap.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,14 @@ lldb_private::formatters::LibcxxStdMapSyntheticFrontEnd::Update() {
395395

396396
llvm::Expected<size_t> lldb_private::formatters::LibcxxStdMapSyntheticFrontEnd::
397397
GetIndexOfChildWithName(ConstString name) {
398-
return ExtractIndexFromString(name.GetCString());
398+
size_t idx = ExtractIndexFromString(name.GetCString());
399+
if (idx == UINT32_MAX) {
400+
return llvm::createStringError(
401+
"'SyntheticChildrenFrontend::LibcxxStdMapSyntheticFrontEnd' cannot "
402+
"find index of child '%s'",
403+
name.AsCString());
404+
}
405+
return idx;
399406
}
400407

401408
SyntheticChildrenFrontEnd *

lldb/source/Plugins/Language/CPlusPlus/LibCxxProxyArray.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,14 @@ lldb_private::formatters::LibcxxStdProxyArraySyntheticFrontEnd::
181181
"'SyntheticChildrenFrontend::LibcxxStdProxyArraySyntheticFrontEnd' "
182182
"cannot find index of child '%s'",
183183
name.AsCString());
184-
return ExtractIndexFromString(name.GetCString());
184+
size_t idx = ExtractIndexFromString(name.GetCString());
185+
if (idx == UINT32_MAX) {
186+
return llvm::createStringError(
187+
"'SyntheticChildrenFrontend::LibcxxStdProxyArraySyntheticFrontEnd' "
188+
"cannot find index of child '%s'",
189+
name.AsCString());
190+
}
191+
return idx;
185192
}
186193

187194
lldb_private::SyntheticChildrenFrontEnd *

0 commit comments

Comments
 (0)