diff options
| author | Gabor Horvath <xazax.hun@gmail.com> | 2018-04-24 14:45:58 +0000 |
|---|---|---|
| committer | Gabor Horvath <xazax.hun@gmail.com> | 2018-04-24 14:45:58 +0000 |
| commit | 2735166156a610df89be4540e53a7b22e903ce28 (patch) | |
| tree | 87649005c7dcb3011b3174fa3a32dafc381aab03 /clang-tools-extra | |
| parent | 497c70fff18cff30e2bfd0c69ff391b8190a9447 (diff) | |
| download | bcm5719-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.cpp | 6 | ||||
| -rw-r--r-- | clang-tools-extra/test/clang-tidy/misc-unconventional-assign-operator-cxx17.cpp | 12 |
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; + } +}; |

