[clang-tools-extra] 07028cd - modernize-use-trailing-return-type fix for PR44206

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Sat Oct 3 07:10:06 PDT 2020


Author: Bernhard Manfred Gruber
Date: 2020-10-03T10:08:44-04:00
New Revision: 07028cd5dbb8417fb41121a7e75290fab00f65fc

URL: https://github.com/llvm/llvm-project/commit/07028cd5dbb8417fb41121a7e75290fab00f65fc
DIFF: https://github.com/llvm/llvm-project/commit/07028cd5dbb8417fb41121a7e75290fab00f65fc.diff

LOG: modernize-use-trailing-return-type fix for PR44206

Prevent rewrite when an unqualified id in a typedef type collides
with a function argument name. Fixes PR44206.

Added: 
    

Modified: 
    clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
    clang-tools-extra/test/clang-tidy/checkers/modernize-use-trailing-return-type.cpp

Removed: 
    


################################################################################
diff  --git a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
index b66e24d58b2f..ff2f62e6545b 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
@@ -66,6 +66,10 @@ struct UnqualNameVisitor : public RecursiveASTVisitor<UnqualNameVisitor> {
                                 ->getName()))
           return false;
         break;
+      case TypeLoc::Typedef:
+        if (VisitUnqualName(
+                TL.getAs<TypedefTypeLoc>().getTypePtr()->getDecl()->getName()))
+          return false;
       default:
         break;
       }

diff  --git a/clang-tools-extra/test/clang-tidy/checkers/modernize-use-trailing-return-type.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize-use-trailing-return-type.cpp
index d5087b598f29..d9efc006b22e 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize-use-trailing-return-type.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize-use-trailing-return-type.cpp
@@ -9,10 +9,16 @@ namespace std {
 
     class string;
 
-    class ostream;
+    template <typename T>
+    class basic_ostream;
+
+    using ostream = basic_ostream<char>;
 
     template <typename T>
     auto declval() -> T;
+
+    template <typename... Ts>
+    class tuple;
 }
 
 //
@@ -527,6 +533,10 @@ std::array<int, Size> j6(unsigned Size);
 std::array<decltype(Size), (Size * 2) + 1> j8(unsigned Size);
 // CHECK-MESSAGES: :[[@LINE-1]]:44: warning: use a trailing return type for this function [modernize-use-trailing-return-type]
 // CHECK-FIXES: {{^}}std::array<decltype(Size), (Size * 2) + 1> j8(unsigned Size);{{$}}
+using std::ostream;
+std::tuple<int, std::string, ostream>& operator<<(ostream& ostream, float i);
+// CHECK-MESSAGES: :[[@LINE-1]]:40: warning: use a trailing return type for this function [modernize-use-trailing-return-type]
+// CHECK-FIXES: {{^}}std::tuple<int, std::string, ostream>& operator<<(ostream& ostream, float i);{{$}}
 
 class CC {
     int Object;
@@ -552,7 +562,6 @@ Object DD::g() {
 // bug 44206, no rewrite should happen due to collision with parameter name
 //
 
-using std::ostream;
 ostream& operator<<(ostream& ostream, int i);
 // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: use a trailing return type for this function [modernize-use-trailing-return-type]
 // CHECK-FIXES: {{^}}ostream& operator<<(ostream& ostream, int i);{{$}}


        


More information about the cfe-commits mailing list