[Lldb-commits] [lldb] [lldb] add TemplateRange and NameQualifiersRange to DemangledNameInfo (PR #150999)
Charles Zablit via lldb-commits
lldb-commits at lists.llvm.org
Tue Jul 29 09:43:56 PDT 2025
================
@@ -435,142 +435,202 @@ struct DemanglingPartsTestCase {
DemanglingPartsTestCase g_demangling_parts_test_cases[] = {
// clang-format off
{ "_ZNVKO3BarIN2ns3QuxIiEEE1CIPFi3FooIS_IiES6_EEE6methodIS6_EENS5_IT_SC_E5InnerIiEESD_SD_",
- { /*.BasenameRange=*/{92, 98}, /*.ScopeRange=*/{36, 92}, /*.ArgumentsRange=*/{ 108, 158 },
- /*.QualifiersRange=*/{158, 176}, /*.PrefixRange=*/{0, 0}, /*.SuffixRange=*/{0, 0} },
+ {
+ /*.BasenameRange=*/{92, 98}, /*.TemplateRange=*/{0, 0}, /*.ScopeRange=*/{36, 92},
----------------
charles-zablit wrote:
> I'm concerned how setting the TemplateRange is done outside of the TrackingOutputBuffer. Would it be difficult to track this inside the demangler?
In Swift, this is done inside the demangler.
In C++, I tried, but was not able to figure out how to properly do it. I added calls to `updateTemplateArguments` around `N.TemplateArgs->print(*this);` in this function:
```cpp
void TrackingOutputBuffer::printLeftImpl(const NameWithTemplateArgs &N) {
N.Name->print(*this);
updateBasenameEnd();
N.TemplateArgs->print(*this);
}
```
However, even with different guards to not overwrite the starting ranges, this did not work.
I ended up setting the `TemplateArgumentsRange` manually in the demangler.
> Also, shouldn't the CPlusPlusLanguage plugin be changed to now use the TemplateArgumentsRange to handle the ${function.template-arguments} variable?
Yes, this is fixed now 👍
https://github.com/llvm/llvm-project/pull/150999
More information about the lldb-commits
mailing list