[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