Szelethus updated this revision to Diff 274466.
Szelethus added a comment.

Revert changes to plugins and to the related tests, allow the `example` package 
to bypass the new restriction.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D81761/new/

https://reviews.llvm.org/D81761

Files:
  clang/include/clang/StaticAnalyzer/Checkers/Checkers.td
  clang/lib/StaticAnalyzer/Frontend/CheckerRegistry.cpp
  clang/unittests/StaticAnalyzer/RegisterCustomCheckersTest.cpp

Index: clang/unittests/StaticAnalyzer/RegisterCustomCheckersTest.cpp
===================================================================
--- clang/unittests/StaticAnalyzer/RegisterCustomCheckersTest.cpp
+++ clang/unittests/StaticAnalyzer/RegisterCustomCheckersTest.cpp
@@ -42,17 +42,16 @@
 
 void addCustomChecker(AnalysisASTConsumer &AnalysisConsumer,
                       AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.CustomChecker", true}};
+  AnOpts.CheckersAndPackages = {{"test.CustomChecker", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([](CheckerRegistry &Registry) {
-    Registry.addChecker<CustomChecker>("custom.CustomChecker", "Description",
-                                       "");
+    Registry.addChecker<CustomChecker>("test.CustomChecker", "Description", "");
   });
 }
 
 TEST(RegisterCustomCheckers, RegisterChecker) {
   std::string Diags;
   EXPECT_TRUE(runCheckerOnCode<addCustomChecker>("void f() {;}", Diags));
-  EXPECT_EQ(Diags, "custom.CustomChecker:Custom diagnostic description\n");
+  EXPECT_EQ(Diags, "test.CustomChecker:Custom diagnostic description\n");
 }
 
 //===----------------------------------------------------------------------===//
@@ -122,7 +121,7 @@
 void addCheckerRegistrationOrderPrinter(CheckerRegistry &Registry) {
   Registry.addChecker(registerCheckerRegistrationOrderPrinter,
                       shouldRegisterCheckerRegistrationOrderPrinter,
-                      "custom.RegistrationOrder", "Description", "", false);
+                      "test.RegistrationOrder", "Description", "", false);
 }
 
 #define UNITTEST_CHECKER(CHECKER_NAME, DIAG_MSG)                               \
@@ -143,7 +142,7 @@
   }                                                                            \
   void add##CHECKER_NAME(CheckerRegistry &Registry) {                          \
     Registry.addChecker(register##CHECKER_NAME, shouldRegister##CHECKER_NAME,  \
-                        "custom." #CHECKER_NAME, "Description", "", false);    \
+                        "test." #CHECKER_NAME, "Description", "", false);      \
   }
 
 UNITTEST_CHECKER(StrongDep, "Strong")
@@ -156,22 +155,22 @@
 
 void addDep(AnalysisASTConsumer &AnalysisConsumer,
                   AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([](CheckerRegistry &Registry) {
     Registry.addChecker(registerStrongDep, shouldRegisterStrongFALSE,
-                        "custom.Strong", "Description", "", false);
+                        "test.Strong", "Description", "", false);
     addStrongDep(Registry);
     addDep(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addDependency("custom.Dep", "custom.Strong");
+    Registry.addDependency("test.Dep", "test.Strong");
   });
 }
 
 TEST(RegisterDeps, UnsatisfiedDependency) {
   std::string Diags;
   EXPECT_TRUE(runCheckerOnCode<addDep>("void f() {int i;}", Diags));
-  EXPECT_EQ(Diags, "custom.RegistrationOrder:custom.RegistrationOrder\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.RegistrationOrder\n");
 }
 
 //===----------------------------------------------------------------------===//
@@ -182,52 +181,52 @@
 
 void addWeakDepCheckerBothEnabled(AnalysisASTConsumer &AnalysisConsumer,
                                   AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.WeakDep", true},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.WeakDep", true},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([=](CheckerRegistry &Registry) {
     addWeakDep(Registry);
     addDep(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addWeakDependency("custom.Dep", "custom.WeakDep");
+    Registry.addWeakDependency("test.Dep", "test.WeakDep");
   });
 }
 
 void addWeakDepCheckerBothEnabledSwitched(AnalysisASTConsumer &AnalysisConsumer,
                                           AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.WeakDep", true},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.WeakDep", true},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([=](CheckerRegistry &Registry) {
     addWeakDep(Registry);
     addDep(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addWeakDependency("custom.WeakDep", "custom.Dep");
+    Registry.addWeakDependency("test.WeakDep", "test.Dep");
   });
 }
 
 void addWeakDepCheckerDepDisabled(AnalysisASTConsumer &AnalysisConsumer,
                                   AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.WeakDep", false},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.WeakDep", false},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([=](CheckerRegistry &Registry) {
     addWeakDep(Registry);
     addDep(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addWeakDependency("custom.Dep", "custom.WeakDep");
+    Registry.addWeakDependency("test.Dep", "test.WeakDep");
   });
 }
 
 void addWeakDepCheckerDepUnspecified(AnalysisASTConsumer &AnalysisConsumer,
                                      AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([=](CheckerRegistry &Registry) {
     addWeakDep(Registry);
     addDep(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addWeakDependency("custom.Dep", "custom.WeakDep");
+    Registry.addWeakDependency("test.Dep", "test.WeakDep");
   });
 }
 
@@ -236,10 +235,10 @@
 
 void addWeakDepHasWeakDep(AnalysisASTConsumer &AnalysisConsumer,
                           AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.WeakDep", true},
-                                {"custom.WeakDep2", true},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.WeakDep", true},
+                                {"test.WeakDep2", true},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([=](CheckerRegistry &Registry) {
     addStrongDep(Registry);
     addWeakDep(Registry);
@@ -247,17 +246,17 @@
     addDep(Registry);
     addDep2(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addWeakDependency("custom.Dep", "custom.WeakDep");
-    Registry.addWeakDependency("custom.WeakDep", "custom.WeakDep2");
+    Registry.addWeakDependency("test.Dep", "test.WeakDep");
+    Registry.addWeakDependency("test.WeakDep", "test.WeakDep2");
   });
 }
 
 void addWeakDepTransitivity(AnalysisASTConsumer &AnalysisConsumer,
                             AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.WeakDep", false},
-                                {"custom.WeakDep2", true},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.WeakDep", false},
+                                {"test.WeakDep2", true},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([=](CheckerRegistry &Registry) {
     addStrongDep(Registry);
     addWeakDep(Registry);
@@ -265,8 +264,8 @@
     addDep(Registry);
     addDep2(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addWeakDependency("custom.Dep", "custom.WeakDep");
-    Registry.addWeakDependency("custom.WeakDep", "custom.WeakDep2");
+    Registry.addWeakDependency("test.Dep", "test.WeakDep");
+    Registry.addWeakDependency("test.WeakDep", "test.WeakDep2");
   });
 }
 
@@ -274,42 +273,40 @@
   std::string Diags;
   EXPECT_TRUE(runCheckerOnCode<addWeakDepCheckerBothEnabled>(
       "void f() {int i;}", Diags));
-  EXPECT_EQ(Diags, "custom.RegistrationOrder:custom.WeakDep\ncustom."
-                   "Dep\ncustom.RegistrationOrder\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.WeakDep\ntest."
+                   "Dep\ntest.RegistrationOrder\n");
   Diags.clear();
 
   // Mind that AnalyzerOption listed the enabled checker list in the same order,
   // but the dependencies are switched.
   EXPECT_TRUE(runCheckerOnCode<addWeakDepCheckerBothEnabledSwitched>(
       "void f() {int i;}", Diags));
-  EXPECT_EQ(Diags, "custom.RegistrationOrder:custom.Dep\ncustom."
-                   "RegistrationOrder\ncustom.WeakDep\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.Dep\ntest."
+                   "RegistrationOrder\ntest.WeakDep\n");
   Diags.clear();
 
   // Weak dependencies dont prevent dependent checkers from being enabled.
   EXPECT_TRUE(runCheckerOnCode<addWeakDepCheckerDepDisabled>(
       "void f() {int i;}", Diags));
-  EXPECT_EQ(Diags,
-            "custom.RegistrationOrder:custom.Dep\ncustom.RegistrationOrder\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.Dep\ntest.RegistrationOrder\n");
   Diags.clear();
 
   // Nor will they be enabled just because a dependent checker is.
   EXPECT_TRUE(runCheckerOnCode<addWeakDepCheckerDepUnspecified>(
       "void f() {int i;}", Diags));
-  EXPECT_EQ(Diags,
-            "custom.RegistrationOrder:custom.Dep\ncustom.RegistrationOrder\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.Dep\ntest.RegistrationOrder\n");
   Diags.clear();
 
   EXPECT_TRUE(
       runCheckerOnCode<addWeakDepTransitivity>("void f() {int i;}", Diags));
-  EXPECT_EQ(Diags, "custom.RegistrationOrder:custom.WeakDep2\ncustom."
-                   "Dep\ncustom.RegistrationOrder\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.WeakDep2\ntest."
+                   "Dep\ntest.RegistrationOrder\n");
   Diags.clear();
 
   EXPECT_TRUE(
       runCheckerOnCode<addWeakDepHasWeakDep>("void f() {int i;}", Diags));
-  EXPECT_EQ(Diags, "custom.RegistrationOrder:custom.WeakDep2\ncustom."
-                   "WeakDep\ncustom.Dep\ncustom.RegistrationOrder\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.WeakDep2\ntest."
+                   "WeakDep\ntest.Dep\ntest.RegistrationOrder\n");
   Diags.clear();
 }
 
@@ -319,98 +316,98 @@
 
 void addWeakDepHasStrongDep(AnalysisASTConsumer &AnalysisConsumer,
                             AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.StrongDep", true},
-                                {"custom.WeakDep", true},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.StrongDep", true},
+                                {"test.WeakDep", true},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([=](CheckerRegistry &Registry) {
     addStrongDep(Registry);
     addWeakDep(Registry);
     addDep(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addDependency("custom.WeakDep", "custom.StrongDep");
-    Registry.addWeakDependency("custom.Dep", "custom.WeakDep");
+    Registry.addDependency("test.WeakDep", "test.StrongDep");
+    Registry.addWeakDependency("test.Dep", "test.WeakDep");
   });
 }
 
 void addWeakDepAndStrongDep(AnalysisASTConsumer &AnalysisConsumer,
                             AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.StrongDep", true},
-                                {"custom.WeakDep", true},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.StrongDep", true},
+                                {"test.WeakDep", true},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([=](CheckerRegistry &Registry) {
     addStrongDep(Registry);
     addWeakDep(Registry);
     addDep(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addDependency("custom.Dep", "custom.StrongDep");
-    Registry.addWeakDependency("custom.Dep", "custom.WeakDep");
+    Registry.addDependency("test.Dep", "test.StrongDep");
+    Registry.addWeakDependency("test.Dep", "test.WeakDep");
   });
 }
 
 void addDisabledWeakDepHasStrongDep(AnalysisASTConsumer &AnalysisConsumer,
                                     AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.StrongDep", true},
-                                {"custom.WeakDep", false},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.StrongDep", true},
+                                {"test.WeakDep", false},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([=](CheckerRegistry &Registry) {
     addStrongDep(Registry);
     addWeakDep(Registry);
     addDep(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addDependency("custom.WeakDep", "custom.StrongDep");
-    Registry.addWeakDependency("custom.Dep", "custom.WeakDep");
+    Registry.addDependency("test.WeakDep", "test.StrongDep");
+    Registry.addWeakDependency("test.Dep", "test.WeakDep");
   });
 }
 
 void addDisabledWeakDepHasUnspecifiedStrongDep(
     AnalysisASTConsumer &AnalysisConsumer, AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.WeakDep", false},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.WeakDep", false},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([=](CheckerRegistry &Registry) {
     addStrongDep(Registry);
     addWeakDep(Registry);
     addDep(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addDependency("custom.WeakDep", "custom.StrongDep");
-    Registry.addWeakDependency("custom.Dep", "custom.WeakDep");
+    Registry.addDependency("test.WeakDep", "test.StrongDep");
+    Registry.addWeakDependency("test.Dep", "test.WeakDep");
   });
 }
 
 void addWeakDepHasDisabledStrongDep(AnalysisASTConsumer &AnalysisConsumer,
                                     AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.StrongDep", false},
-                                {"custom.WeakDep", true},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.StrongDep", false},
+                                {"test.WeakDep", true},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([=](CheckerRegistry &Registry) {
     addStrongDep(Registry);
     addWeakDep(Registry);
     addDep(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addDependency("custom.WeakDep", "custom.StrongDep");
-    Registry.addWeakDependency("custom.Dep", "custom.WeakDep");
+    Registry.addDependency("test.WeakDep", "test.StrongDep");
+    Registry.addWeakDependency("test.Dep", "test.WeakDep");
   });
 }
 
 void addWeakDepHasUnspecifiedButLaterEnabledStrongDep(
     AnalysisASTConsumer &AnalysisConsumer, AnalyzerOptions &AnOpts) {
-  AnOpts.CheckersAndPackages = {{"custom.Dep", true},
-                                {"custom.Dep2", true},
-                                {"custom.WeakDep", true},
-                                {"custom.RegistrationOrder", true}};
+  AnOpts.CheckersAndPackages = {{"test.Dep", true},
+                                {"test.Dep2", true},
+                                {"test.WeakDep", true},
+                                {"test.RegistrationOrder", true}};
   AnalysisConsumer.AddCheckerRegistrationFn([=](CheckerRegistry &Registry) {
     addStrongDep(Registry);
     addWeakDep(Registry);
     addDep(Registry);
     addDep2(Registry);
     addCheckerRegistrationOrderPrinter(Registry);
-    Registry.addDependency("custom.WeakDep", "custom.StrongDep");
-    Registry.addDependency("custom.Dep2", "custom.StrongDep");
-    Registry.addWeakDependency("custom.Dep", "custom.WeakDep");
+    Registry.addDependency("test.WeakDep", "test.StrongDep");
+    Registry.addDependency("test.Dep2", "test.StrongDep");
+    Registry.addWeakDependency("test.Dep", "test.WeakDep");
   });
 }
 
@@ -418,8 +415,8 @@
   std::string Diags;
   EXPECT_TRUE(
       runCheckerOnCode<addWeakDepHasStrongDep>("void f() {int i;}", Diags));
-  EXPECT_EQ(Diags, "custom.RegistrationOrder:custom.StrongDep\ncustom."
-                   "WeakDep\ncustom.Dep\ncustom.RegistrationOrder\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.StrongDep\ntest."
+                   "WeakDep\ntest.Dep\ntest.RegistrationOrder\n");
   Diags.clear();
 
   // Weak dependencies are registered before strong dependencies. This is most
@@ -428,39 +425,36 @@
   // established in between the modeling portion and the weak dependency.
   EXPECT_TRUE(
       runCheckerOnCode<addWeakDepAndStrongDep>("void f() {int i;}", Diags));
-  EXPECT_EQ(Diags, "custom.RegistrationOrder:custom.WeakDep\ncustom."
-                   "StrongDep\ncustom.Dep\ncustom.RegistrationOrder\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.WeakDep\ntest."
+                   "StrongDep\ntest.Dep\ntest.RegistrationOrder\n");
   Diags.clear();
 
   // If a weak dependency is disabled, the checker itself can still be enabled.
   EXPECT_TRUE(runCheckerOnCode<addDisabledWeakDepHasStrongDep>(
       "void f() {int i;}", Diags));
-  EXPECT_EQ(Diags, "custom.RegistrationOrder:custom.Dep\ncustom."
-                   "RegistrationOrder\ncustom.StrongDep\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.Dep\ntest."
+                   "RegistrationOrder\ntest.StrongDep\n");
   Diags.clear();
 
   // If a weak dependency is disabled, the checker itself can still be enabled,
   // but it shouldn't enable a strong unspecified dependency.
   EXPECT_TRUE(runCheckerOnCode<addDisabledWeakDepHasUnspecifiedStrongDep>(
       "void f() {int i;}", Diags));
-  EXPECT_EQ(Diags,
-            "custom.RegistrationOrder:custom.Dep\ncustom.RegistrationOrder\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.Dep\ntest.RegistrationOrder\n");
   Diags.clear();
 
   // A strong dependency of a weak dependency is disabled, so neither of them
   // should be enabled.
   EXPECT_TRUE(runCheckerOnCode<addWeakDepHasDisabledStrongDep>(
       "void f() {int i;}", Diags));
-  EXPECT_EQ(Diags,
-            "custom.RegistrationOrder:custom.Dep\ncustom.RegistrationOrder\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.Dep\ntest.RegistrationOrder\n");
   Diags.clear();
 
   EXPECT_TRUE(
       runCheckerOnCode<addWeakDepHasUnspecifiedButLaterEnabledStrongDep>(
           "void f() {int i;}", Diags));
-  EXPECT_EQ(Diags,
-            "custom.RegistrationOrder:custom.StrongDep\ncustom.WeakDep\ncustom."
-            "Dep\ncustom.Dep2\ncustom.RegistrationOrder\n");
+  EXPECT_EQ(Diags, "test.RegistrationOrder:test.StrongDep\ntest.WeakDep\ntest."
+                   "Dep\ntest.Dep2\ntest.RegistrationOrder\n");
   Diags.clear();
 }
 } // namespace
Index: clang/lib/StaticAnalyzer/Frontend/CheckerRegistry.cpp
===================================================================
--- clang/lib/StaticAnalyzer/Frontend/CheckerRegistry.cpp
+++ clang/lib/StaticAnalyzer/Frontend/CheckerRegistry.cpp
@@ -310,6 +310,13 @@
            DependencyIt->FullName == Entry.second &&
            "Failed to find the dependency of a checker!");
 
+    // We do allow diagnostics from unit test/example dependency checkers.
+    assert((DependencyIt->FullName.startswith("test") ||
+            DependencyIt->FullName.startswith("example") || IsWeak ||
+            DependencyIt->IsHidden) &&
+           "Strong dependencies are modeling checkers, and as such "
+           "non-user facing! Mark them hidden in Checkers.td!");
+
     if (IsWeak)
       CheckerIt->WeakDependencies.emplace_back(&*DependencyIt);
     else
Index: clang/include/clang/StaticAnalyzer/Checkers/Checkers.td
===================================================================
--- clang/include/clang/StaticAnalyzer/Checkers/Checkers.td
+++ clang/include/clang/StaticAnalyzer/Checkers/Checkers.td
@@ -130,7 +130,8 @@
            "function/method call. For instance, if we can't reason about the "
            "nullability of the implicit this parameter after a method call, "
            "this checker conservatively assumes it to be non-null">,
-  Documentation<HasDocumentation>;
+  Documentation<HasDocumentation>,
+  Hidden;
 
 def CallAndMessageChecker : Checker<"CallAndMessage">,
   HelpText<"Check for logical errors for function calls and Objective-C "
@@ -220,7 +221,8 @@
 
 def DynamicTypePropagation : Checker<"DynamicTypePropagation">,
   HelpText<"Generate dynamic type information">,
-  Documentation<NotDocumented>;
+  Documentation<NotDocumented>,
+  Hidden;
 
 def NonnullGlobalConstantsChecker: Checker<"NonnilStringConstants">,
   HelpText<"Assume that const string-like globals are non-null">,
@@ -356,7 +358,8 @@
                   "false",
                   Released>
   ]>,
-  Documentation<NotDocumented>;
+  Documentation<NotDocumented>,
+  Hidden;
 
 def TrustNonnullChecker : Checker<"TrustNonnull">,
   HelpText<"Trust that returns from framework methods annotated with _Nonnull "
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to