[clang-tools-extra] [clang-tidy] Make `bugprone-unhandled-self-assignment` check more general (PR #147066)
Andrey Karlov via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 14 04:08:02 PDT 2025
================
@@ -69,6 +69,22 @@ void UnhandledSelfAssignmentCheck::registerMatchers(MatchFinder *Finder) {
cxxMethodDecl(unless(hasDescendant(cxxMemberCallExpr(callee(cxxMethodDecl(
hasName("operator="), ofClass(equalsBoundNode("class"))))))));
+ // Checking that some kind of constructor is called and followed by a `swap`:
+ // T& operator=(const T& other) {
+ // T tmp{this->internal_data(), some, other, args};
+ // swap(tmp);
+ // return *this;
+ // }
+ const auto HasCopyAndSwap = cxxMethodDecl(
+ ofClass(cxxRecordDecl(unless(hasAncestor(classTemplateDecl())))),
----------------
negativ wrote:
@5chmidti since I'm just getting started with AST-matchers, I went with the safe approach :D Stripped out the extra restrictions - it's simply `ofClass(cxxRecordDecl())` now
https://github.com/llvm/llvm-project/pull/147066
More information about the cfe-commits
mailing list