================
@@ -21,6 +21,40 @@ using namespace clang::ast_matchers;
namespace clang::tidy::modernize {
+namespace {
+AST_MATCHER(FunctionDecl, isOverloaded) {
+ const DeclarationName Name = Node.getDeclName();
+ // Sanity check
+ if (Name.isEmpty())
+ return false;
+ const DeclContext *DC = Node.getDeclContext();
+ auto LookupResult = DC->lookup(Name);
+ size_t UniqueSignatures = 0;
+ llvm::SmallPtrSet<const FunctionDecl *, 2> SeenFunctions;
+ for (NamedDecl *ND : LookupResult) {
+ const FunctionDecl *FD = nullptr;
+ if (const auto *Func = dyn_cast<FunctionDecl>(ND)) {
+ // Regular functions
+ FD = Func;
+ } else if (const auto *USD = dyn_cast<UsingShadowDecl>(ND)) {
+ // Overloads via "using ns::func_name"
+ FD = dyn_cast<FunctionDecl>(USD->getTargetDecl());
----------------
zwuis wrote:
`USD->getTargetDecl()` can be a function template.
https://github.com/llvm/llvm-project/pull/183921
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits