Skip to content

Commit fb1fcc8

Browse files
Merge pull request #11352 from charles-zablit/charles-zablit/lldb/nfc-dedup-nodeprinter-logic
[NFC][lldb] de duplicate TrackingNodePrinter finalize logic
2 parents e441845 + d89e864 commit fb1fcc8

File tree

3 files changed

+31
-30
lines changed

3 files changed

+31
-30
lines changed

lldb/source/Core/Mangled.cpp

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -168,21 +168,6 @@ GetSwiftDemangledStr(ConstString m_mangled, const SymbolContext *sc,
168168
}
169169
auto [demangled, info] = SwiftLanguageRuntime::TrackedDemangleSymbolAsString(
170170
mangled_name, demangle_mode, sc);
171-
// TODO: The logic below should be in the NodePrinter.
172-
info.PrefixRange.second =
173-
std::min(info.BasenameRange.first, info.ArgumentsRange.first);
174-
info.SuffixRange.first =
175-
std::max(info.BasenameRange.second, info.ArgumentsRange.second);
176-
info.SuffixRange.second = demangled.length();
177-
if (info.hasBasename() && info.hasArguments()) {
178-
if (info.hasTemplateArguments() && info.TemplateArgumentsRange.first > 0) {
179-
info.NameQualifiersRange.second = std::min(
180-
info.ArgumentsRange.first, info.TemplateArgumentsRange.first);
181-
} else {
182-
info.NameQualifiersRange.second = info.ArgumentsRange.first;
183-
}
184-
info.NameQualifiersRange.first = info.BasenameRange.second;
185-
}
186171

187172
// Don't cache the demangled name if the function isn't available yet.
188173
// Only cache eFullName demangled functions to keep the cache consistent.

lldb/source/Plugins/Language/Swift/SwiftMangled.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ class TrackingNodePrinter : public NodePrinter {
2929

3030
lldb_private::DemangledNameInfo getInfo() { return info; }
3131

32+
void printRoot(NodePointer root) override {
33+
NodePrinter::printRoot(root);
34+
finalizePrefixRange();
35+
finalizeSuffixRange();
36+
finalizeNameQualifiersRange();
37+
}
38+
3239
private:
3340
lldb_private::DemangledNameInfo info;
3441
std::optional<unsigned> parametersDepth;
@@ -118,6 +125,30 @@ class TrackingNodePrinter : public NodePrinter {
118125
showTypes);
119126
endParameters(depth);
120127
}
128+
129+
void finalizePrefixRange() {
130+
info.PrefixRange.second =
131+
std::min(info.BasenameRange.first, info.ArgumentsRange.first);
132+
}
133+
134+
void finalizeSuffixRange() {
135+
info.SuffixRange.first =
136+
std::max(info.BasenameRange.second, info.ArgumentsRange.second);
137+
info.SuffixRange.second = Printer.getStreamLength();
138+
}
139+
140+
void finalizeNameQualifiersRange() {
141+
if (!info.hasBasename() || !info.hasArguments())
142+
return;
143+
144+
if (info.hasTemplateArguments() && info.TemplateArgumentsRange.first > 0) {
145+
info.NameQualifiersRange.second = std::min(
146+
info.ArgumentsRange.first, info.TemplateArgumentsRange.first);
147+
} else {
148+
info.NameQualifiersRange.second = info.ArgumentsRange.first;
149+
}
150+
info.NameQualifiersRange.first = info.BasenameRange.second;
151+
}
121152
};
122153

123154
#endif // liblldb_SwiftMangled_h_

lldb/unittests/Core/SwiftDemanglingPartsTest.cpp

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1580,21 +1580,6 @@ TEST_P(SwiftDemanglingPartsTestFixture, SwiftDemanglingParts) {
15801580
swift::Demangle::demangleSymbolAsString(std::string(mangled), printer);
15811581
std::string demangled = printer.takeString();
15821582
DemangledNameInfo nameInfo = printer.getInfo();
1583-
nameInfo.PrefixRange.second =
1584-
std::min(nameInfo.BasenameRange.first, nameInfo.ArgumentsRange.first);
1585-
nameInfo.SuffixRange.first =
1586-
std::max(nameInfo.BasenameRange.second, nameInfo.ArgumentsRange.second);
1587-
nameInfo.SuffixRange.second = demangled.length();
1588-
if (nameInfo.hasBasename() && nameInfo.hasArguments()) {
1589-
if (nameInfo.hasTemplateArguments() &&
1590-
nameInfo.TemplateArgumentsRange.first > 0) {
1591-
nameInfo.NameQualifiersRange.second = std::min(
1592-
nameInfo.ArgumentsRange.first, nameInfo.TemplateArgumentsRange.first);
1593-
} else {
1594-
nameInfo.NameQualifiersRange.second = info.ArgumentsRange.first;
1595-
}
1596-
nameInfo.NameQualifiersRange.first = info.BasenameRange.second;
1597-
}
15981583

15991584
EXPECT_EQ(nameInfo.BasenameRange, info.BasenameRange);
16001585
EXPECT_EQ(nameInfo.NameQualifiersRange, info.NameQualifiersRange);

0 commit comments

Comments
 (0)