mirror of
https://github.com/github/codeql.git
synced 2026-04-24 00:05:14 +02:00
Swift: mangle GenericTypeDecl
This commit is contained in:
@@ -23,6 +23,7 @@ SwiftMangledName initMangled(const swift::Decl* decl) {
|
||||
ret << swift::Decl::getKindName(decl->getKind()) << "Decl_";
|
||||
return ret;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
SwiftMangledName SwiftMangler::mangleModuleName(std::string_view name) {
|
||||
@@ -68,6 +69,16 @@ SwiftMangledName SwiftMangler::visitModuleDecl(const swift::ModuleDecl* decl) {
|
||||
return mangleModuleName(decl->getRealName().str());
|
||||
}
|
||||
|
||||
SwiftMangledName SwiftMangler::visitGenericTypeDecl(const swift::GenericTypeDecl* decl) {
|
||||
if (auto context = decl->getDeclContext()->getAsDecl()) {
|
||||
auto ret = initMangled(decl);
|
||||
ret << dispatcher.fetchLabel(context);
|
||||
ret << decl->getName().str();
|
||||
return ret;
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
SwiftMangledName SwiftMangler::visitModuleType(const swift::ModuleType* type) {
|
||||
auto ret = initMangled(type);
|
||||
ret << type->getModule()->getRealName().str();
|
||||
|
||||
@@ -45,6 +45,7 @@ class SwiftMangler : private swift::TypeVisitor<SwiftMangler, SwiftMangledName>,
|
||||
SwiftMangledName visitValueDecl(const swift::ValueDecl* decl);
|
||||
|
||||
SwiftMangledName visitModuleDecl(const swift::ModuleDecl* decl);
|
||||
SwiftMangledName visitGenericTypeDecl(const swift::GenericTypeDecl* decl);
|
||||
|
||||
// default fallback for not yet mangled types. This should never be called in normal situations
|
||||
// will just spawn a random name
|
||||
|
||||
Reference in New Issue
Block a user