Skip to content

Commit 82c1463

Browse files
author
git apple-llvm automerger
committed
Merge commit '9b322e22dc61' from swift/release/6.2 into stable/20240723
2 parents 53a5f32 + 9b322e2 commit 82c1463

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
@@ -1582,21 +1582,6 @@ TEST_P(SwiftDemanglingPartsTestFixture, SwiftDemanglingParts) {
15821582
swift::Demangle::demangleSymbolAsString(std::string(mangled), printer);
15831583
std::string demangled = printer.takeString();
15841584
DemangledNameInfo nameInfo = printer.getInfo();
1585-
nameInfo.PrefixRange.second =
1586-
std::min(nameInfo.BasenameRange.first, nameInfo.ArgumentsRange.first);
1587-
nameInfo.SuffixRange.first =
1588-
std::max(nameInfo.BasenameRange.second, nameInfo.ArgumentsRange.second);
1589-
nameInfo.SuffixRange.second = demangled.length();
1590-
if (nameInfo.hasBasename() && nameInfo.hasArguments()) {
1591-
if (nameInfo.hasTemplateArguments() &&
1592-
nameInfo.TemplateArgumentsRange.first > 0) {
1593-
nameInfo.NameQualifiersRange.second = std::min(
1594-
nameInfo.ArgumentsRange.first, nameInfo.TemplateArgumentsRange.first);
1595-
} else {
1596-
nameInfo.NameQualifiersRange.second = info.ArgumentsRange.first;
1597-
}
1598-
nameInfo.NameQualifiersRange.first = info.BasenameRange.second;
1599-
}
16001585

16011586
EXPECT_EQ(nameInfo.BasenameRange, info.BasenameRange);
16021587
EXPECT_EQ(nameInfo.NameQualifiersRange, info.NameQualifiersRange);

0 commit comments

Comments
 (0)