diff options
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/misc-unconventional-assign-operator.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/misc-unconventional-assign-operator.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/misc-unconventional-assign-operator.cpp b/clang-tools-extra/test/clang-tidy/misc-unconventional-assign-operator.cpp index 7ad9610ea94..729b7d50a88 100644 --- a/clang-tools-extra/test/clang-tidy/misc-unconventional-assign-operator.cpp +++ b/clang-tools-extra/test/clang-tidy/misc-unconventional-assign-operator.cpp @@ -87,3 +87,25 @@ public: return n; } }; + +namespace pr31531 { +enum E { e }; +// This declaration makes the 'return *this' below have an unresolved operator +// in the class template, but not in an instantiation. +E operator*(E, E); + +template <typename> +struct UnresolvedOperator { + UnresolvedOperator &operator=(const UnresolvedOperator &) { return *this; } +}; + +UnresolvedOperator<int> UnresolvedOperatorInt; + +template <typename> +struct Template { + Template &operator=(const Template &) { return this; } + // CHECK-MESSAGES: :[[@LINE-1]]:43: warning: operator=() should always return '*this' +}; + +Template<int> TemplateInt; +} |