================
@@ -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

Reply via email to