summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra
diff options
context:
space:
mode:
authorGabor Horvath <xazax.hun@gmail.com>2018-04-24 14:45:58 +0000
committerGabor Horvath <xazax.hun@gmail.com>2018-04-24 14:45:58 +0000
commit2735166156a610df89be4540e53a7b22e903ce28 (patch)
tree87649005c7dcb3011b3174fa3a32dafc381aab03 /clang-tools-extra
parent497c70fff18cff30e2bfd0c69ff391b8190a9447 (diff)
downloadbcm5719-llvm-2735166156a610df89be4540e53a7b22e903ce28.tar.gz
bcm5719-llvm-2735166156a610df89be4540e53a7b22e903ce28.zip
[clang-tidy] Fix PR35468
Differential Revision: https://reviews.llvm.org/D46003 llvm-svn: 330719
Diffstat (limited to 'clang-tools-extra')
-rw-r--r--clang-tools-extra/clang-tidy/misc/UnconventionalAssignOperatorCheck.cpp6
-rw-r--r--clang-tools-extra/test/clang-tidy/misc-unconventional-assign-operator-cxx17.cpp12
2 files changed, 15 insertions, 3 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/UnconventionalAssignOperatorCheck.cpp b/clang-tools-extra/clang-tidy/misc/UnconventionalAssignOperatorCheck.cpp
index cde631e0aa7..0fd7e771250 100644
--- a/clang-tools-extra/clang-tidy/misc/UnconventionalAssignOperatorCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/UnconventionalAssignOperatorCheck.cpp
@@ -24,9 +24,9 @@ void UnconventionalAssignOperatorCheck::registerMatchers(
if (!getLangOpts().CPlusPlus)
return;
- const auto HasGoodReturnType = cxxMethodDecl(returns(
- lValueReferenceType(pointee(unless(isConstQualified()),
- hasDeclaration(equalsBoundNode("class"))))));
+ const auto HasGoodReturnType = cxxMethodDecl(returns(lValueReferenceType(
+ pointee(unless(isConstQualified()),
+ anyOf(autoType(), hasDeclaration(equalsBoundNode("class")))))));
const auto IsSelf = qualType(
anyOf(hasDeclaration(equalsBoundNode("class")),
diff --git a/clang-tools-extra/test/clang-tidy/misc-unconventional-assign-operator-cxx17.cpp b/clang-tools-extra/test/clang-tidy/misc-unconventional-assign-operator-cxx17.cpp
new file mode 100644
index 00000000000..ba1a685842e
--- /dev/null
+++ b/clang-tools-extra/test/clang-tidy/misc-unconventional-assign-operator-cxx17.cpp
@@ -0,0 +1,12 @@
+// RUN: %check_clang_tidy %s misc-unconventional-assign-operator %t -- -- -std=c++17 -fno-delayed-template-parsing
+
+struct BadModifier {
+ BadModifier& operator=(const BadModifier&) const;
+ // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: operator=() should not be marked 'const'
+};
+
+struct PR35468 {
+ template<typename T> auto &operator=(const T &) {
+ return *this;
+ }
+};
OpenPOWER on IntegriCloud