================
@@ -82,39 +82,15 @@ static std::string GetSignature(const FunctionDecl *Target)
{
return Signature;
}
-static std::string GetEnclosingDeclContextSignature(const Decl *D) {
- if (!D)
+static std::string GetEnclosingDeclContextSignature(const Decl *EnclosingDecl)
{
+ if (!EnclosingDecl)
return "";
- if (const auto *ND = dyn_cast<NamedDecl>(D)) {
- std::string DeclName;
-
- switch (ND->getKind()) {
- case Decl::Namespace:
- case Decl::Record:
- case Decl::CXXRecord:
- case Decl::Enum:
- DeclName = ND->getQualifiedNameAsString();
- break;
- case Decl::CXXConstructor:
- case Decl::CXXDestructor:
- case Decl::CXXConversion:
- case Decl::CXXMethod:
- case Decl::Function:
- DeclName = GetSignature(dyn_cast_or_null<FunctionDecl>(ND));
- break;
- case Decl::ObjCMethod:
- // ObjC Methods can not be overloaded, qualified name uniquely identifies
- // the method.
- DeclName = ND->getQualifiedNameAsString();
- break;
- default:
- break;
- }
-
- return DeclName;
+ if (const auto *ND = dyn_cast<NamedDecl>(EnclosingDecl)) {
+ if (const auto *FD = dyn_cast<FunctionDecl>(EnclosingDecl))
+ return GetSignature(FD);
+ return ND->getQualifiedNameAsString();
----------------
NagyDonat wrote:
```suggestion
if (const auto *ND = dyn_cast_or_null<NamedDecl>(EnclosingDecl)) {
if (const auto *FD = dyn_cast<FunctionDecl>(ND)) {
// To distinguish overloads we need to use the signature.
return GetSignature(FD);
}
return ND->getQualifiedNameAsString();
```
Several minor nitpicks:
- The early return can be eliminated if you use `dyn_cast_or_null`.
- I think it is more natural to cast `FD` from `ND`.
- Let's re-add the remark about overloads, given that it was the answer for
https://github.com/llvm/llvm-project/pull/214102#discussion_r3735228151
https://github.com/llvm/llvm-project/pull/214102
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits