Skip to content

Commit c079040

Browse files
[lldb] add has methods to all DemangledNameInfo attributes (#144549)
Add `hasX` methods to all the attributes of `DemangledNameInfo`.
1 parent dae5104 commit c079040

File tree

2 files changed

+95
-0
lines changed

2 files changed

+95
-0
lines changed

lldb/include/lldb/Core/DemangledNameInfo.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,25 @@ struct DemangledNameInfo {
7373
bool hasBasename() const {
7474
return BasenameRange.second > BasenameRange.first;
7575
}
76+
77+
/// Returns \c true if this object holds a valid scope range.
78+
bool hasScope() const { return ScopeRange.second > ScopeRange.first; }
79+
80+
/// Returns \c true if this object holds a valid arguments range.
81+
bool hasArguments() const {
82+
return ArgumentsRange.second > ArgumentsRange.first;
83+
}
84+
85+
/// Returns \c true if this object holds a valid qualifiers range.
86+
bool hasQualifiers() const {
87+
return QualifiersRange.second > QualifiersRange.first;
88+
}
89+
90+
/// Returns \c true if this object holds a valid prefix range.
91+
bool hasPrefix() const { return PrefixRange.second > PrefixRange.first; }
92+
93+
/// Returns \c true if this object holds a valid suffix range.
94+
bool hasSuffix() const { return SuffixRange.second > SuffixRange.first; }
7695
};
7796

7897
/// An OutputBuffer which keeps a record of where certain parts of a

lldb/unittests/Core/MangledTest.cpp

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,82 @@ TEST_P(DemanglingPartsTestFixture, DemanglingParts) {
635635
INSTANTIATE_TEST_SUITE_P(DemanglingPartsTests, DemanglingPartsTestFixture,
636636
::testing::ValuesIn(g_demangling_parts_test_cases));
637637

638+
struct DemangledNameInfoTestCase {
639+
DemangledNameInfo expected_info;
640+
bool valid_basename;
641+
bool valid_scope;
642+
bool valid_arguments;
643+
bool valid_qualifiers;
644+
bool valid_prefix;
645+
bool valid_suffix;
646+
};
647+
648+
DemangledNameInfoTestCase g_demangled_name_info_test_cases[] = {
649+
// clang-format off
650+
{
651+
{ /*.BasenameRange=*/{0, 10}, /*.ScopeRange=*/{0, 0}, /*.ArgumentsRange=*/{0, 0},
652+
/*.QualifiersRange=*/{0, 0}, /*.PrefixRange=*/{0, 0}, /*.SuffixRange=*/{0, 0}
653+
},
654+
/*valid_basename=*/true, /*valid_scope=*/false, /*valid_arguments=*/false,
655+
/*valid_qualifiers=*/false, /*valid_prefix=*/false, /*valid_suffix=*/false,
656+
},
657+
{
658+
{ /*.BasenameRange=*/{0, 0}, /*.ScopeRange=*/{0, 10}, /*.ArgumentsRange=*/{0, 0},
659+
/*.QualifiersRange=*/{0, 0}, /*.PrefixRange=*/{0, 0}, /*.SuffixRange=*/{0, 0}
660+
},
661+
/*valid_basename=*/false, /*valid_scope=*/true, /*valid_arguments=*/false,
662+
/*valid_qualifiers=*/false, /*valid_prefix=*/false, /*valid_suffix=*/false,
663+
},
664+
{
665+
{ /*.BasenameRange=*/{0, 0}, /*.ScopeRange=*/{0, 0}, /*.ArgumentsRange=*/{0, 10},
666+
/*.QualifiersRange=*/{0, 0}, /*.PrefixRange=*/{0, 0}, /*.SuffixRange=*/{0, 0}
667+
},
668+
/*valid_basename=*/false, /*valid_scope=*/false, /*valid_arguments=*/true,
669+
/*valid_qualifiers=*/false, /*valid_prefix=*/false, /*valid_suffix=*/false,
670+
},
671+
{
672+
{ /*.BasenameRange=*/{0, 0}, /*.ScopeRange=*/{0, 0}, /*.ArgumentsRange=*/{0, 0},
673+
/*.QualifiersRange=*/{0, 10}, /*.PrefixRange=*/{0, 0}, /*.SuffixRange=*/{0, 0}
674+
},
675+
/*valid_basename=*/false, /*valid_scope=*/false, /*valid_arguments=*/false,
676+
/*valid_qualifiers=*/true, /*valid_prefix=*/false, /*valid_suffix=*/false,
677+
},
678+
{
679+
{ /*.BasenameRange=*/{0, 0}, /*.ScopeRange=*/{0, 0}, /*.ArgumentsRange=*/{0, 0},
680+
/*.QualifiersRange=*/{0, 0}, /*.PrefixRange=*/{0, 10}, /*.SuffixRange=*/{0, 0}
681+
},
682+
/*valid_basename=*/false, /*valid_scope=*/false, /*valid_arguments=*/false,
683+
/*valid_qualifiers=*/false, /*valid_prefix=*/true, /*valid_suffix=*/false,
684+
},
685+
{
686+
{ /*.BasenameRange=*/{0, 0}, /*.ScopeRange=*/{0, 0}, /*.ArgumentsRange=*/{0, 0},
687+
/*.QualifiersRange=*/{0, 0}, /*.PrefixRange=*/{0, 0}, /*.SuffixRange=*/{0, 10}
688+
},
689+
/*valid_basename=*/false, /*valid_scope=*/false, /*valid_arguments=*/false,
690+
/*valid_qualifiers=*/false, /*valid_prefix=*/false, /*valid_suffix=*/true,
691+
},
692+
// clang-format on
693+
};
694+
695+
struct DemangledNameInfoTestFixture
696+
: public ::testing::TestWithParam<DemangledNameInfoTestCase> {};
697+
698+
TEST_P(DemangledNameInfoTestFixture, DemangledNameInfoRanges) {
699+
const auto &[info, valid_basename, valid_scope, valid_arguments,
700+
valid_qualifiers, valid_prefix, valid_suffix] = GetParam();
701+
702+
ASSERT_EQ(info.hasBasename(), valid_basename);
703+
ASSERT_EQ(info.hasScope(), valid_scope);
704+
ASSERT_EQ(info.hasArguments(), valid_arguments);
705+
ASSERT_EQ(info.hasQualifiers(), valid_qualifiers);
706+
ASSERT_EQ(info.hasPrefix(), valid_prefix);
707+
ASSERT_EQ(info.hasSuffix(), valid_suffix);
708+
}
709+
710+
INSTANTIATE_TEST_SUITE_P(DemangledNameInfoRangesTests,
711+
DemangledNameInfoTestFixture,
712+
::testing::ValuesIn(g_demangled_name_info_test_cases));
713+
638714
struct DemanglingInfoCorrectnessTestCase {
639715
const char *mangled;
640716
const char *demangled;

0 commit comments

Comments
 (0)