================
@@ -251,17 +303,27 @@ void
UseDefaultMemberInitCheck::registerMatchers(MatchFinder *Finder) {
initCountIs(0), hasType(arrayType()))),
allowedInitExpr());
+ auto CandidateField = forField(unless(anyOf(
+ getLangOpts().CPlusPlus20 ? unless(anything()) : isBitField(),
+ hasInClassInitializer(anything()), hasParent(recordDecl(isUnion())))));
+ auto VisibleDefaultInit =
+ cxxCtorInitializer(CandidateField, withInitializer(Init),
+ hasOnlyVisibleReferencedDecls())
+ .bind("default");
+
Finder->addMatcher(
- cxxConstructorDecl(forEachConstructorInitializer(
- cxxCtorInitializer(
- forField(unless(anyOf(
- getLangOpts().CPlusPlus20 ? unless(anything()) :
isBitField(),
- hasInClassInitializer(anything()),
- hasParent(recordDecl(isUnion()))))),
- withInitializer(Init))
- .bind("default"))),
+ cxxConstructorDecl(forEachConstructorInitializer(VisibleDefaultInit)),
this);
+ if (!IgnoreNonVisibleReferences) {
+ Finder->addMatcher(
+ cxxConstructorDecl(forEachConstructorInitializer(
+ cxxCtorInitializer(CandidateField, withInitializer(Init),
+ unless(hasOnlyVisibleReferencedDecls()))
+ .bind("default-without-fix"))),
+ this);
+ }
----------------
vbvictor wrote:
Can we still have one Finder->addMatcher() but with different:
```cpp
IgnoreNonVisibleReferences ?
cxxCtorInitializer(...).bind("visible-init")
cxxCtorInitializer(...).bind("all-init")
```
Should be less code duplication
https://github.com/llvm/llvm-project/pull/191607
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits