llvm-project/clang-tools-extra
liuke e4902480f1 Fix wrong FixIt about union in cppcoreguidelines-pro-type-member-init
At most one variant member of a union may have a default member
initializer. The case of anonymous records with multiple levels of
nesting like the following also needs to meet this rule. The original
logic is to horizontally obtain all the member variables in a record
that need to be initialized and then filter to the variables that need
to be fixed. Obviously, it is impossible to correctly initialize the
desired variables according to the nesting relationship.

See Example 3 in class.union

union U {
  U() {}
  int x;  // int x{};
  union {
    int k;  // int k{};  <==  wrong fix
  };
  union {
    int z;  // int z{};  <== wrong fix
    int y;
  };
};
2021-09-24 13:15:21 -04:00
..
clang-apply-replacements
clang-change-namespace
clang-doc [clang-doc] Pass Record argument by const-ref. NFCI. 2021-09-24 10:06:13 +01:00
clang-include-fixer
clang-move
clang-query
clang-reorder-fields
clang-tidy Fix wrong FixIt about union in cppcoreguidelines-pro-type-member-init 2021-09-24 13:15:21 -04:00
clangd [clangd] Support `#pragma mark` in the outline 2021-09-23 17:13:30 -04:00
docs docs: correct SPHNIX document reference 2021-09-16 17:43:59 +00:00
modularize
pp-trace
test Fix wrong FixIt about union in cppcoreguidelines-pro-type-member-init 2021-09-24 13:15:21 -04:00
tool-template
unittests
.gitignore
CMakeLists.txt
CODE_OWNERS.TXT
LICENSE.TXT
README.txt

README.txt

//===----------------------------------------------------------------------===//
// Clang Tools repository
//===----------------------------------------------------------------------===//

Welcome to the repository of extra Clang Tools.  This repository holds tools
that are developed as part of the LLVM compiler infrastructure project and the
Clang frontend.  These tools are kept in a separate "extra" repository to
allow lighter weight checkouts of the core Clang codebase.

This repository is only intended to be checked out inside of a full LLVM+Clang
tree, and in the 'tools/extra' subdirectory of the Clang checkout.

All discussion regarding Clang, Clang-based tools, and code in this repository
should be held using the standard Clang mailing lists:
  http://lists.llvm.org/mailman/listinfo/cfe-dev

Code review for this tree should take place on the standard Clang patch and
commit lists:
  http://lists.llvm.org/mailman/listinfo/cfe-commits

If you find a bug in these tools, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/