[all-commits] [llvm/llvm-project] 90d42b: [clang-tidy] Skip private default ctors in moderni...

Alexander Shaposhnikov via All-commits all-commits at lists.llvm.org
Thu Oct 20 15:05:05 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 90d42b1cab04b76e9e934f1e5076f014d1195e72
      https://github.com/llvm/llvm-project/commit/90d42b1cab04b76e9e934f1e5076f014d1195e72
  Author: Alexander Shaposhnikov <ashaposhnikov at google.com>
  Date:   2022-10-20 (Thu, 20 Oct 2022)

  Changed paths:
    M clang-tools-extra/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
    M clang-tools-extra/docs/ReleaseNotes.rst
    A clang-tools-extra/test/clang-tidy/checkers/modernize/use-equals-default-cxx17.cpp
    A clang-tools-extra/test/clang-tidy/checkers/modernize/use-equals-default-cxx20.cpp
    M clang-tools-extra/test/clang-tidy/checkers/modernize/use-equals-default.cpp

  Log Message:
  -----------
  [clang-tidy] Skip private default ctors in modernize-use-equals-default

For c++17 (i.e. before c++20) making a private default ctor explicitly defaulted
might expose the previously intentionally disallowed initializations, e.g.
class Tag { Tag() {} friend class Widget; }; is not equivalent to
class Tag { Tag() = default; friend class Widget; };
since in the latter case Tag is treated as an aggregate despite having a declaration
of the default constructor. This diff makes modernize-use-equals-default skip
in-class empty nonpublic default ctors to avoid code breakages.

Test plan: ninja check-all

Differential revision: https://reviews.llvm.org/D136224




More information about the All-commits mailing list