llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-tools-extra

Author: Zinovy Nis (irishrover)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/183921.diff


2 Files Affected:

- (modified) clang-tools-extra/clang-tidy/modernize/UseStringViewCheck.cpp 
(+24) 
- (modified) 
clang-tools-extra/test/clang-tidy/checkers/modernize/use-string-view.cpp (+7) 


``````````diff
diff --git a/clang-tools-extra/clang-tidy/modernize/UseStringViewCheck.cpp 
b/clang-tools-extra/clang-tidy/modernize/UseStringViewCheck.cpp
index 1dc4cc9856549..98e27d864bfee 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) {
+  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>

``````````

</details>


https://github.com/llvm/llvm-project/pull/183921
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to