Skip to content

Commit 5065bf4

Browse files
committed
[lldb][DemangledNameInfo] Fix tracking of template arugments
Depends on: * llvm#166577 The `isGtInsideTemplateArgs` wasn't the correct API to use for answering whether we are currently printing template arugments. One example is: ``` void func<(foo::Enum)1>() ``` Here `OutputBuffer::GtIsGt > 0` despite us being inside template arguments (because we incremented it when seeing '('). This patch now uses the correct API and adds the above as a test-case.
1 parent d7b189b commit 5065bf4

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

lldb/source/Core/DemangledNameInfo.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ bool TrackingOutputBuffer::shouldTrack() const {
1616
if (!isPrintingTopLevelFunctionType())
1717
return false;
1818

19-
if (isGtInsideTemplateArgs())
19+
if (isInsideTemplateArgs())
2020
return false;
2121

2222
if (NameInfo.ArgumentsRange.first > 0)
@@ -29,7 +29,7 @@ bool TrackingOutputBuffer::canFinalize() const {
2929
if (!isPrintingTopLevelFunctionType())
3030
return false;
3131

32-
if (isGtInsideTemplateArgs())
32+
if (isInsideTemplateArgs())
3333
return false;
3434

3535
if (NameInfo.ArgumentsRange.first == 0)

lldb/unittests/Core/MangledTest.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,16 @@ DemanglingPartsTestCase g_demangling_parts_test_cases[] = {
636636
/*.basename=*/"operator()",
637637
/*.scope=*/"dyld4::Loader::runInitializersBottomUpPlusUpwardLinks(dyld4::RuntimeState&) const::$_0::",
638638
/*.qualifiers=*/" const",
639+
},
640+
{"_Z4funcILN3foo4EnumE1EEvv",
641+
{
642+
/*.BasenameRange=*/{5, 9}, /*.TemplateArgumentsRange=*/{9, 23}, /*.ScopeRange=*/{5, 5},
643+
/*.ArgumentsRange=*/{23, 25}, /*.QualifiersRange=*/{25, 25}, /*.NameQualifiersRange=*/{0, 0},
644+
/*.PrefixRange=*/{0, 0}, /*.SuffixRange=*/{0, 0}
645+
},
646+
/*.basename=*/"func",
647+
/*.scope=*/"",
648+
/*.qualifiers=*/"",
639649
}
640650
// clang-format on
641651
};

0 commit comments

Comments
 (0)