Skip to content

Commit c8ab93d

Browse files
committed
[lldb] Fix mismerge of 07ae73d
1 parent 86eda72 commit c8ab93d

File tree

3 files changed

+39
-19
lines changed

3 files changed

+39
-19
lines changed

lldb/source/Plugins/LanguageRuntime/Swift/SwiftLanguageRuntimeDynamicTypeResolution.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3085,6 +3085,7 @@ SwiftLanguageRuntimeImpl::ResolveTypeAlias(CompilerType alias) {
30853085
if (!tr_ts)
30863086
return llvm::createStringError("could not get typesystem");
30873087

3088+
auto flavor = SwiftLanguageRuntime::GetManglingFlavor(alias.GetMangledTypeName());
30883089
// Extract the mangling of the alias type's parent type and its
30893090
// generic substitutions if any.
30903091
auto mangled = alias.GetMangledTypeName().GetStringRef();
@@ -3161,7 +3162,7 @@ SwiftLanguageRuntimeImpl::ResolveTypeAlias(CompilerType alias) {
31613162
swift::reflection::GenericArgumentMap substitutions;
31623163
unsigned idx = 0;
31633164
for (auto &child : *subst_node) {
3164-
auto mangling = swift_demangle::GetMangledName(dem, child);
3165+
auto mangling = swift_demangle::GetMangledName(dem, child, flavor);
31653166
if (!mangling.isSuccess())
31663167
continue;
31673168
const auto *type_ref = reflection_ctx->GetTypeRefOrNull(

lldb/source/Plugins/TypeSystem/Swift/SwiftDemangle.h

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -98,30 +98,49 @@ GetDemangledTypeMangling(swift::Demangle::Demangler &dem,
9898
}
9999

100100
/// Wrap node in Global/TypeMangling/Type.
101-
static swift::Demangle::NodePointer
102-
mangleType(swift::Demangle::Demangler &dem,
103-
swift::Demangle::NodePointer typeNode) {
101+
inline swift::Demangle::NodePointer
102+
MangleType(swift::Demangle::Demangler &dem,
103+
swift::Demangle::NodePointer type_node) {
104104
auto *global = dem.createNode(Node::Kind::Global);
105-
auto *typeMangling = dem.createNode(Node::Kind::TypeMangling);
106-
global->addChild(typeMangling, dem);
105+
auto *type_mangling = dem.createNode(Node::Kind::TypeMangling);
106+
global->addChild(type_mangling, dem);
107107
auto *type = dem.createNode(Node::Kind::Type);
108-
typeMangling->addChild(type, dem);
109-
type->addChild(typeNode, dem);
108+
type_mangling->addChild(type, dem);
109+
type->addChild(type_node, dem);
110110
return global;
111111
}
112112

113+
/// Produce a type mangle tree for a nominal type.
114+
inline swift::Demangle::NodePointer
115+
CreateNominal(swift::Demangle::Demangler &dem, swift::Demangle::Node::Kind kind,
116+
llvm::StringRef module_name, llvm::StringRef type_name) {
117+
auto *nominal = dem.createNode(kind);
118+
auto *m = dem.createNodeWithAllocatedText(Node::Kind::Module, module_name);
119+
auto *id = dem.createNodeWithAllocatedText(Node::Kind::Identifier, type_name);
120+
nominal->addChild(m, dem);
121+
nominal->addChild(id, dem);
122+
return nominal;
123+
}
124+
113125
/// Produce a type mangling for a class.
114126
inline ManglingErrorOr<std::string>
115-
mangleClass(swift::Demangle::Demangler &dem, llvm::StringRef moduleName,
116-
llvm::StringRef className, swift::Mangle::ManglingFlavor flavor) {
117-
auto *classNode = dem.createNode(Node::Kind::Class);
118-
auto *module =
119-
dem.createNodeWithAllocatedText(Node::Kind::Module, moduleName);
120-
auto *identifier =
121-
dem.createNodeWithAllocatedText(Node::Kind::Identifier, className);
122-
classNode->addChild(module, dem);
123-
classNode->addChild(identifier, dem);
124-
return mangleNode(mangleType(dem, classNode), flavor);
127+
MangleClass(swift::Demangle::Demangler &dem, llvm::StringRef module_name,
128+
llvm::StringRef class_name, swift::Mangle::ManglingFlavor flavor) {
129+
auto *node = CreateNominal(dem, Node::Kind::Class, module_name, class_name);
130+
return mangleNode(MangleType(dem, node), flavor);
131+
}
132+
133+
/// Create a mangled name for a type node.
134+
inline swift::Demangle::ManglingErrorOr<std::string>
135+
GetMangledName(swift::Demangle::Demangler &dem,
136+
swift::Demangle::NodePointer node,
137+
swift::Mangle::ManglingFlavor flavor) {
138+
using namespace swift::Demangle;
139+
auto global = dem.createNode(Node::Kind::Global);
140+
auto type_mangling = dem.createNode(Node::Kind::TypeMangling);
141+
global->addChild(type_mangling, dem);
142+
type_mangling->addChild(node, dem);
143+
return mangleNode(global, flavor);
125144
}
126145

127146
} // namespace swift_demangle

lldb/source/Plugins/TypeSystem/Swift/TypeSystemSwiftTypeRef.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ std::string TypeSystemSwiftTypeRef::AdjustTypeForOriginallyDefinedInModule(
316316
: node;
317317
});
318318

319-
auto mangling = mangleNode(swift_demangle::mangleType(dem, transformed));
319+
auto mangling = mangleNode(swift_demangle::MangleType(dem, transformed));
320320
assert(mangling.isSuccess());
321321
if (!mangling.isSuccess()) {
322322
LLDB_LOG(GetLog(LLDBLog::Types),

0 commit comments

Comments
 (0)