https://github.com/irishrover updated https://github.com/llvm/llvm-project/pull/183921
>From 26f0fcb6c849984ee1b9e5a18f13228e98ff5c4c Mon Sep 17 00:00:00 2001 From: Zinovy Nis <[email protected]> Date: Sat, 28 Feb 2026 17:33:50 +0300 Subject: [PATCH] [clang-tidy] Skip overloaded functions in modernize-use-string-view --- .../modernize/UseStringViewCheck.cpp | 24 +++++++++++++++++++ .../checkers/modernize/use-string-view.cpp | 7 ++++++ 2 files changed, 31 insertions(+) diff --git a/clang-tools-extra/clang-tidy/modernize/UseStringViewCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseStringViewCheck.cpp index 1dc4cc9856549..1ac3abc06752e 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseStringViewCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseStringViewCheck.cpp @@ -21,6 +21,29 @@ using namespace clang::ast_matchers; namespace clang::tidy::modernize { +namespace { +AST_MATCHER(FunctionDecl, isOverloaded) { + const DeclarationName Name = Node.getDeclName(); + const DeclContext *DC = Node.getDeclContext(); + // Skip lambda-like functions + if (Name.isEmpty()) + return false; + auto LookupResult = DC->lookup(Name); + size_t UniqueSignatures = 0; + llvm::SmallPtrSet<const FunctionDecl *, 2> SeenFunctions; + for (NamedDecl *ND : LookupResult) { + if (const auto *FD = dyn_cast<FunctionDecl>(ND)) { + if (SeenFunctions.insert(FD->getCanonicalDecl()).second) { + UniqueSignatures++; + if (UniqueSignatures > 1) + return true; + } + } + } + return false; +} +} // namespace + static constexpr StringRef StringViewClassKey = "string"; static constexpr StringRef WStringViewClassKey = "wstring"; static constexpr StringRef U8StringViewClassKey = "u8string"; @@ -81,6 +104,7 @@ void UseStringViewCheck::registerMatchers(MatchFinder *Finder) { functionDecl( isDefinition(), unless(anyOf(VirtualOrOperator, IgnoredFunctionsMatcher, + isOverloaded(), ast_matchers::isExplicitTemplateSpecialization())), returns(IsStdString), hasDescendant(returnStmt()), unless(hasDescendant(returnStmt(hasReturnValue(unless( diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-string-view.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-string-view.cpp index 2a00a7200ee76..832af0c26ef70 100644 --- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-string-view.cpp +++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-string-view.cpp @@ -365,6 +365,13 @@ std::string lambda() { }(); } +namespace overloads { +std::string dbl2str(double f); +std::string overload(int) { return "int"; } +std::string overload(double f) { return "f=" + dbl2str(f); } +std::string overload(std::string) { return "string"; } +} + struct TemplateString { static constexpr char* val = "TEMPLATE"; template<typename T> _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
