[all-commits] [llvm/llvm-project] 5de443: [clang-tidy] Make copy-and-swap idiom more general...

Andrey Karlov via All-commits all-commits at lists.llvm.org
Wed Jul 23 03:19:45 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 5de443a4d37e1b7580f9ccee389572aef7233a85
      https://github.com/llvm/llvm-project/commit/5de443a4d37e1b7580f9ccee389572aef7233a85
  Author: Andrey Karlov <dein.negativ at gmail.com>
  Date:   2025-07-23 (Wed, 23 Jul 2025)

  Changed paths:
    M clang-tools-extra/clang-tidy/bugprone/UnhandledSelfAssignmentCheck.cpp
    M clang-tools-extra/docs/ReleaseNotes.rst
    M clang-tools-extra/test/clang-tidy/checkers/bugprone/unhandled-self-assignment.cpp

  Log Message:
  -----------
  [clang-tidy] Make copy-and-swap idiom more general for `bugprone-unhandled-self-assignment` (#147066)

This change enhances the `bugprone-unhandled-self-assignment` checker by
adding an additional matcher that generalizes the copy-and-swap idiom
pattern detection.

# What Changed

Added a new matcher that checks for:
- An instance of the current class being created in operator=
(regardless of constructor arguments)
- That instance being passed to a `swap` function call

# Problem Solved
This fix reduces false positives in PMR-like scenarios where "extended"
constructors are used (typically taking an additional allocator
argument). The checker now properly recognizes copy-and-swap
implementations that use extended copy/move constructors instead of
flagging them as unhandled self-assignment cases.

Fixes #146324

---------

Co-authored-by: Baranov Victor <bar.victor.2002 at gmail.com>



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list