Author: Ingo Müller
Date: 2025-09-17T17:12:29+02:00
New Revision: 30f88b9a24f17f079b708431407dd346a7decf07

URL: 
https://github.com/llvm/llvm-project/commit/30f88b9a24f17f079b708431407dd346a7decf07
DIFF: 
https://github.com/llvm/llvm-project/commit/30f88b9a24f17f079b708431407dd346a7decf07.diff

LOG: Revert "[clang-tidy] support query based custom check (#131804)"

This reverts commit d05b7f1bb3e16ce37c1d17cfb170440e09244ce1.

Added: 
    

Modified: 
    clang-tools-extra/CMakeLists.txt
    clang-tools-extra/clang-tidy/CMakeLists.txt
    clang-tools-extra/clang-tidy/ClangTidy.cpp
    clang-tools-extra/clang-tidy/ClangTidy.h
    clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
    clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h
    clang-tools-extra/clang-tidy/ClangTidyForceLinker.h
    clang-tools-extra/clang-tidy/ClangTidyModule.h
    clang-tools-extra/clang-tidy/ClangTidyOptions.cpp
    clang-tools-extra/clang-tidy/ClangTidyOptions.h
    clang-tools-extra/clang-tidy/clang-tidy-config.h.cmake
    clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
    clang-tools-extra/docs/ReleaseNotes.rst
    clang-tools-extra/docs/clang-tidy/Contributing.rst
    clang-tools-extra/docs/clang-tidy/index.rst
    clang-tools-extra/test/clang-tidy/check_clang_tidy.py
    clang-tools-extra/unittests/clang-tidy/CMakeLists.txt
    clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h

Removed: 
    clang-tools-extra/clang-tidy/custom/CMakeLists.txt
    clang-tools-extra/clang-tidy/custom/CustomTidyModule.cpp
    clang-tools-extra/clang-tidy/custom/QueryCheck.cpp
    clang-tools-extra/clang-tidy/custom/QueryCheck.h
    clang-tools-extra/docs/clang-tidy/QueryBasedCustomChecks.rst
    clang-tools-extra/test/clang-tidy/checkers/custom/Inputs/clang-tidy.yml
    
clang-tools-extra/test/clang-tidy/checkers/custom/Inputs/incorrect-clang-tidy.yml
    clang-tools-extra/test/clang-tidy/checkers/custom/query-incorrect-query.cpp
    
clang-tools-extra/test/clang-tidy/checkers/custom/query-partially-active-check.cpp
    clang-tools-extra/test/clang-tidy/checkers/custom/query.cpp
    
clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/append-clang-tidy.yml
    
clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/empty-clang-tidy.yml
    
clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/override-clang-tidy.yml
    
clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/root-clang-tidy.yml
    
clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/vfsoverlay.yaml
    
clang-tools-extra/test/clang-tidy/infrastructure/custom-query-check-not-enable.cpp
    clang-tools-extra/test/clang-tidy/infrastructure/custom-query-check.cpp


################################################################################
diff  --git a/clang-tools-extra/CMakeLists.txt 
b/clang-tools-extra/CMakeLists.txt
index 87050db4e0e75..6b6f2b1ca2276 100644
--- a/clang-tools-extra/CMakeLists.txt
+++ b/clang-tools-extra/CMakeLists.txt
@@ -5,8 +5,6 @@ include(GNUInstallDirs)
 
 option(CLANG_TIDY_ENABLE_STATIC_ANALYZER
   "Include static analyzer checks in clang-tidy" ON)
-option(CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS
-  "Enable query-based custom checks in clang-tidy" ON)
 
 if(CLANG_INCLUDE_TESTS)
   umbrella_lit_testsuite_begin(check-clang-tools)

diff  --git a/clang-tools-extra/clang-tidy/CMakeLists.txt 
b/clang-tools-extra/clang-tidy/CMakeLists.txt
index 153356245cfd1..93117cf1d6373 100644
--- a/clang-tools-extra/clang-tidy/CMakeLists.txt
+++ b/clang-tools-extra/clang-tidy/CMakeLists.txt
@@ -58,7 +58,6 @@ add_subdirectory(bugprone)
 add_subdirectory(cert)
 add_subdirectory(concurrency)
 add_subdirectory(cppcoreguidelines)
-add_subdirectory(custom)
 add_subdirectory(darwin)
 add_subdirectory(fuchsia)
 add_subdirectory(google)
@@ -102,10 +101,6 @@ set(ALL_CLANG_TIDY_CHECKS
   clangTidyReadabilityModule
   clangTidyZirconModule
   )
-
-if(CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS)
-  list(APPEND ALL_CLANG_TIDY_CHECKS clangTidyCustomModule)
-endif()
 if(CLANG_TIDY_ENABLE_STATIC_ANALYZER)
   list(APPEND ALL_CLANG_TIDY_CHECKS clangTidyMPIModule)
 endif()

diff  --git a/clang-tools-extra/clang-tidy/ClangTidy.cpp 
b/clang-tools-extra/clang-tidy/ClangTidy.cpp
index db3b9eac53b8f..4c36bbccf44d9 100644
--- a/clang-tools-extra/clang-tidy/ClangTidy.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidy.cpp
@@ -53,11 +53,6 @@ 
LLVM_INSTANTIATE_REGISTRY(clang::tidy::ClangTidyModuleRegistry)
 
 namespace clang::tidy {
 
-namespace custom {
-extern void registerCustomChecks(const ClangTidyOptions &O,
-                                 ClangTidyCheckFactories &Factories);
-} // namespace custom
-
 namespace {
 #if CLANG_TIDY_ENABLE_STATIC_ANALYZER
 #define ANALYZER_CHECK_NAME_PREFIX "clang-analyzer-"
@@ -347,10 +342,6 @@ ClangTidyASTConsumerFactory::ClangTidyASTConsumerFactory(
     IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem> OverlayFS)
     : Context(Context), OverlayFS(std::move(OverlayFS)),
       CheckFactories(new ClangTidyCheckFactories) {
-#if CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS
-  if (Context.canExperimentalCustomChecks())
-    custom::registerCustomChecks(Context.getOptions(), *CheckFactories);
-#endif
   for (ClangTidyModuleRegistry::entry E : ClangTidyModuleRegistry::entries()) {
     std::unique_ptr<ClangTidyModule> Module = E.instantiate();
     Module->addCheckFactories(*CheckFactories);
@@ -420,10 +411,7 @@ ClangTidyASTConsumerFactory::createASTConsumer(
                         .getCurrentWorkingDirectory();
   if (WorkingDir)
     Context.setCurrentBuildDirectory(WorkingDir.get());
-#if CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS
-  if (Context.canExperimentalCustomChecks())
-    custom::registerCustomChecks(Context.getOptions(), *CheckFactories);
-#endif
+
   std::vector<std::unique_ptr<ClangTidyCheck>> Checks =
       CheckFactories->createChecksForLanguage(&Context);
 
@@ -509,13 +497,13 @@ ClangTidyOptions::OptionMap 
ClangTidyASTConsumerFactory::getCheckOptions() {
   return Options;
 }
 
-std::vector<std::string> getCheckNames(const ClangTidyOptions &Options,
-                                       bool AllowEnablingAnalyzerAlphaCheckers,
-                                       bool ExperimentalCustomChecks) {
+std::vector<std::string>
+getCheckNames(const ClangTidyOptions &Options,
+              bool AllowEnablingAnalyzerAlphaCheckers) {
   clang::tidy::ClangTidyContext Context(
       std::make_unique<DefaultOptionsProvider>(ClangTidyGlobalOptions(),
                                                Options),
-      AllowEnablingAnalyzerAlphaCheckers, false, ExperimentalCustomChecks);
+      AllowEnablingAnalyzerAlphaCheckers);
   ClangTidyASTConsumerFactory Factory(Context);
   return Factory.getCheckNames();
 }
@@ -536,12 +524,11 @@ void filterCheckOptions(ClangTidyOptions &Options,
 
 ClangTidyOptions::OptionMap
 getCheckOptions(const ClangTidyOptions &Options,
-                bool AllowEnablingAnalyzerAlphaCheckers,
-                bool ExperimentalCustomChecks) {
+                bool AllowEnablingAnalyzerAlphaCheckers) {
   clang::tidy::ClangTidyContext Context(
       std::make_unique<DefaultOptionsProvider>(ClangTidyGlobalOptions(),
                                                Options),
-      AllowEnablingAnalyzerAlphaCheckers, false, ExperimentalCustomChecks);
+      AllowEnablingAnalyzerAlphaCheckers);
   ClangTidyDiagnosticConsumer DiagConsumer(Context);
   auto DiagOpts = std::make_unique<DiagnosticOptions>();
   DiagnosticsEngine DE(llvm::makeIntrusiveRefCnt<DiagnosticIDs>(), *DiagOpts,
@@ -678,19 +665,15 @@ void exportReplacements(const llvm::StringRef 
MainFilePath,
   YAML << TUD;
 }
 
-ChecksAndOptions getAllChecksAndOptions(bool 
AllowEnablingAnalyzerAlphaCheckers,
-                                        bool ExperimentalCustomChecks) {
+ChecksAndOptions
+getAllChecksAndOptions(bool AllowEnablingAnalyzerAlphaCheckers) {
   ChecksAndOptions Result;
   ClangTidyOptions Opts;
   Opts.Checks = "*";
   clang::tidy::ClangTidyContext Context(
       std::make_unique<DefaultOptionsProvider>(ClangTidyGlobalOptions(), Opts),
-      AllowEnablingAnalyzerAlphaCheckers, false, ExperimentalCustomChecks);
+      AllowEnablingAnalyzerAlphaCheckers);
   ClangTidyCheckFactories Factories;
-#if CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS
-  if (ExperimentalCustomChecks)
-    custom::registerCustomChecks(Context.getOptions(), Factories);
-#endif
   for (const ClangTidyModuleRegistry::entry &Module :
        ClangTidyModuleRegistry::entries()) {
     Module.instantiate()->addCheckFactories(Factories);

diff  --git a/clang-tools-extra/clang-tidy/ClangTidy.h 
b/clang-tools-extra/clang-tidy/ClangTidy.h
index f4e6b7ef34ab0..3d1d3ca0b1791 100644
--- a/clang-tools-extra/clang-tidy/ClangTidy.h
+++ b/clang-tools-extra/clang-tidy/ClangTidy.h
@@ -56,16 +56,15 @@ class ClangTidyASTConsumerFactory {
 /// Fills the list of check names that are enabled when the provided
 /// filters are applied.
 std::vector<std::string> getCheckNames(const ClangTidyOptions &Options,
-                                       bool AllowEnablingAnalyzerAlphaCheckers,
-                                       bool ExperimentalCustomChecks);
+                                       bool 
AllowEnablingAnalyzerAlphaCheckers);
 
 struct ChecksAndOptions {
   llvm::StringSet<> Checks;
   llvm::StringSet<> Options;
 };
 
-ChecksAndOptions getAllChecksAndOptions(bool 
AllowEnablingAnalyzerAlphaCheckers,
-                                        bool ExperimentalCustomChecks);
+ChecksAndOptions
+getAllChecksAndOptions(bool AllowEnablingAnalyzerAlphaCheckers = true);
 
 /// Returns the effective check-specific options.
 ///
@@ -75,8 +74,7 @@ ChecksAndOptions getAllChecksAndOptions(bool 
AllowEnablingAnalyzerAlphaCheckers,
 /// Options.
 ClangTidyOptions::OptionMap
 getCheckOptions(const ClangTidyOptions &Options,
-                bool AllowEnablingAnalyzerAlphaCheckers,
-                bool ExperimentalCustomChecks);
+                bool AllowEnablingAnalyzerAlphaCheckers);
 
 /// Filters CheckOptions in \p Options to only include options specified in
 /// the \p EnabledChecks which is a sorted vector.

diff  --git a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp 
b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
index 823c7b5626e97..d07f15a10555f 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
@@ -160,12 +160,11 @@ ClangTidyError::ClangTidyError(StringRef CheckName,
 
 ClangTidyContext::ClangTidyContext(
     std::unique_ptr<ClangTidyOptionsProvider> OptionsProvider,
-    bool AllowEnablingAnalyzerAlphaCheckers, bool EnableModuleHeadersParsing,
-    bool ExperimentalCustomChecks)
+    bool AllowEnablingAnalyzerAlphaCheckers, bool EnableModuleHeadersParsing)
     : OptionsProvider(std::move(OptionsProvider)),
+
       AllowEnablingAnalyzerAlphaCheckers(AllowEnablingAnalyzerAlphaCheckers),
-      EnableModuleHeadersParsing(EnableModuleHeadersParsing),
-      ExperimentalCustomChecks(ExperimentalCustomChecks) {
+      EnableModuleHeadersParsing(EnableModuleHeadersParsing) {
   // Before the first translation unit we can get errors related to 
command-line
   // parsing, use dummy string for the file name in this case.
   setCurrentFile("dummy");

diff  --git a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h 
b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h
index 21ffd9de35c19..a854756d647c2 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h
+++ b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.h
@@ -19,7 +19,6 @@
 #include "llvm/ADT/StringSet.h"
 #include "llvm/Support/Regex.h"
 #include <optional>
-#include <utility>
 
 namespace clang {
 
@@ -69,13 +68,10 @@ struct ClangTidyStats {
 /// \endcode
 class ClangTidyContext {
 public:
-  ClangTidyContext(std::unique_ptr<ClangTidyOptionsProvider> OptionsProvider)
-      : ClangTidyContext(std::move(OptionsProvider), false, false, false) {}
   /// Initializes \c ClangTidyContext instance.
   ClangTidyContext(std::unique_ptr<ClangTidyOptionsProvider> OptionsProvider,
-                   bool AllowEnablingAnalyzerAlphaCheckers,
-                   bool EnableModuleHeadersParsing,
-                   bool ExperimentalCustomChecks);
+                   bool AllowEnablingAnalyzerAlphaCheckers = false,
+                   bool EnableModuleHeadersParsing = false);
   /// Sets the DiagnosticsEngine that diag() will emit diagnostics to.
   // FIXME: this is required initialization, and should be a constructor param.
   // Fix the context -> diag engine -> consumer -> context initialization 
cycle.
@@ -214,10 +210,6 @@ class ClangTidyContext {
     return EnableModuleHeadersParsing;
   }
 
-  // whether experimental custom checks can be enabled.
-  // enabled with `--experimental-custom-checks`
-  bool canExperimentalCustomChecks() const { return ExperimentalCustomChecks; }
-
   void setSelfContainedDiags(bool Value) { SelfContainedDiags = Value; }
 
   bool areDiagsSelfContained() const { return SelfContainedDiags; }
@@ -266,7 +258,6 @@ class ClangTidyContext {
 
   bool AllowEnablingAnalyzerAlphaCheckers;
   bool EnableModuleHeadersParsing;
-  bool ExperimentalCustomChecks;
 
   bool SelfContainedDiags = false;
 

diff  --git a/clang-tools-extra/clang-tidy/ClangTidyForceLinker.h 
b/clang-tools-extra/clang-tidy/ClangTidyForceLinker.h
index cdf6ce2045a5d..adde9136ff1dd 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyForceLinker.h
+++ b/clang-tools-extra/clang-tidy/ClangTidyForceLinker.h
@@ -54,13 +54,6 @@ extern volatile int CppCoreGuidelinesModuleAnchorSource;
 static int LLVM_ATTRIBUTE_UNUSED CppCoreGuidelinesModuleAnchorDestination =
     CppCoreGuidelinesModuleAnchorSource;
 
-#if CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS
-// This anchor is used to force the linker to link the CustomModule.
-extern volatile int CustomModuleAnchorSource;
-static int LLVM_ATTRIBUTE_UNUSED CustomModuleAnchorDestination =
-    CustomModuleAnchorSource;
-#endif
-
 // This anchor is used to force the linker to link the DarwinModule.
 extern volatile int DarwinModuleAnchorSource;
 static int LLVM_ATTRIBUTE_UNUSED DarwinModuleAnchorDestination =

diff  --git a/clang-tools-extra/clang-tidy/ClangTidyModule.h 
b/clang-tools-extra/clang-tidy/ClangTidyModule.h
index 8d697c6261286..7407ab580d378 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyModule.h
+++ b/clang-tools-extra/clang-tidy/ClangTidyModule.h
@@ -62,8 +62,6 @@ class ClangTidyCheckFactories {
                          });
   }
 
-  void eraseCheck(llvm::StringRef CheckName) { Factories.erase(CheckName); }
-
   /// Create instances of checks that are enabled.
   std::vector<std::unique_ptr<ClangTidyCheck>>
   createChecks(ClangTidyContext *Context) const;

diff  --git a/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp 
b/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp
index b752a9beb0e34..dfa3521a25513 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidyOptions.cpp
@@ -8,10 +8,8 @@
 
 #include "ClangTidyOptions.h"
 #include "ClangTidyModuleRegistry.h"
-#include "clang/Basic/DiagnosticIDs.h"
 #include "clang/Basic/LLVM.h"
 #include "llvm/ADT/SmallString.h"
-#include "llvm/ADT/StringExtras.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/ErrorOr.h"
 #include "llvm/Support/MemoryBufferRef.h"
@@ -131,51 +129,6 @@ void yamlize(IO &IO, ClangTidyOptions::OptionMap &Val, 
bool,
   }
 }
 
-namespace {
-struct MultiLineString {
-  std::string &S;
-};
-} // namespace
-
-template <> struct BlockScalarTraits<MultiLineString> {
-  static void output(const MultiLineString &S, void *Ctxt, raw_ostream &OS) {
-    OS << S.S;
-  }
-  static StringRef input(StringRef Str, void *Ctxt, MultiLineString &S) {
-    S.S = Str;
-    return "";
-  }
-};
-
-template <> struct ScalarEnumerationTraits<clang::DiagnosticIDs::Level> {
-  static void enumeration(IO &IO, clang::DiagnosticIDs::Level &Level) {
-    IO.enumCase(Level, "Warning", clang::DiagnosticIDs::Level::Warning);
-    IO.enumCase(Level, "Note", clang::DiagnosticIDs::Level::Note);
-  }
-};
-template <> struct SequenceElementTraits<ClangTidyOptions::CustomCheckDiag> {
-  static const bool flow = false;
-};
-template <> struct MappingTraits<ClangTidyOptions::CustomCheckDiag> {
-  static void mapping(IO &IO, ClangTidyOptions::CustomCheckDiag &D) {
-    IO.mapRequired("BindName", D.BindName);
-    MultiLineString MLS{D.Message};
-    IO.mapRequired("Message", MLS);
-    IO.mapOptional("Level", D.Level);
-  }
-};
-template <> struct SequenceElementTraits<ClangTidyOptions::CustomCheckValue> {
-  static const bool flow = false;
-};
-template <> struct MappingTraits<ClangTidyOptions::CustomCheckValue> {
-  static void mapping(IO &IO, ClangTidyOptions::CustomCheckValue &V) {
-    IO.mapRequired("Name", V.Name);
-    MultiLineString MLS{V.Query};
-    IO.mapRequired("Query", MLS);
-    IO.mapRequired("Diagnostic", V.Diags);
-  }
-};
-
 struct ChecksVariant {
   std::optional<std::string> AsString;
   std::optional<std::vector<std::string>> AsVector;
@@ -231,7 +184,6 @@ template <> struct MappingTraits<ClangTidyOptions> {
     IO.mapOptional("InheritParentConfig", Options.InheritParentConfig);
     IO.mapOptional("UseColor", Options.UseColor);
     IO.mapOptional("SystemHeaders", Options.SystemHeaders);
-    IO.mapOptional("CustomChecks", Options.CustomChecks);
   }
 };
 
@@ -293,8 +245,7 @@ ClangTidyOptions &ClangTidyOptions::mergeWith(const 
ClangTidyOptions &Other,
   overrideValue(UseColor, Other.UseColor);
   mergeVectors(ExtraArgs, Other.ExtraArgs);
   mergeVectors(ExtraArgsBefore, Other.ExtraArgsBefore);
-  // FIXME: how to handle duplicate names check?
-  mergeVectors(CustomChecks, Other.CustomChecks);
+
   for (const auto &KeyValue : Other.CheckOptions) {
     CheckOptions.insert_or_assign(
         KeyValue.getKey(),

diff  --git a/clang-tools-extra/clang-tidy/ClangTidyOptions.h 
b/clang-tools-extra/clang-tidy/ClangTidyOptions.h
index 2aae92f1d9eb3..22a954d2ac645 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyOptions.h
+++ b/clang-tools-extra/clang-tidy/ClangTidyOptions.h
@@ -9,7 +9,6 @@
 #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYOPTIONS_H
 #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CLANGTIDYOPTIONS_H
 
-#include "clang/Basic/DiagnosticIDs.h"
 #include "llvm/ADT/IntrusiveRefCntPtr.h"
 #include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/StringMap.h"
@@ -130,19 +129,6 @@ struct ClangTidyOptions {
   /// Key-value mapping used to store check-specific options.
   OptionMap CheckOptions;
 
-  struct CustomCheckDiag {
-    std::string BindName;
-    std::string Message;
-    std::optional<DiagnosticIDs::Level> Level;
-  };
-  struct CustomCheckValue {
-    std::string Name;
-    std::string Query;
-    llvm::SmallVector<CustomCheckDiag> Diags;
-  };
-  using CustomCheckValueList = llvm::SmallVector<CustomCheckValue>;
-  std::optional<CustomCheckValueList> CustomChecks;
-
   using ArgList = std::vector<std::string>;
 
   /// Add extra compilation arguments to the end of the list.

diff  --git a/clang-tools-extra/clang-tidy/clang-tidy-config.h.cmake 
b/clang-tools-extra/clang-tidy/clang-tidy-config.h.cmake
index 400e89ea60b33..f4d1a4b38004b 100644
--- a/clang-tools-extra/clang-tidy/clang-tidy-config.h.cmake
+++ b/clang-tools-extra/clang-tidy/clang-tidy-config.h.cmake
@@ -6,6 +6,5 @@
 #define CLANG_TIDY_CONFIG_H
 
 #cmakedefine01 CLANG_TIDY_ENABLE_STATIC_ANALYZER
-#cmakedefine01 CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS
 
 #endif

diff  --git a/clang-tools-extra/clang-tidy/custom/CMakeLists.txt 
b/clang-tools-extra/clang-tidy/custom/CMakeLists.txt
deleted file mode 100644
index 0b43387970903..0000000000000
--- a/clang-tools-extra/clang-tidy/custom/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-if(CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS)
-  set(LLVM_LINK_COMPONENTS
-    support
-  )
-
-  add_clang_library(clangTidyCustomModule STATIC
-    CustomTidyModule.cpp
-    QueryCheck.cpp
-
-    LINK_LIBS
-    clangTidy
-    clangTidyUtils
-
-    DEPENDS
-    ClangDriverOptions
-  )
-
-  clang_target_link_libraries(clangTidyCustomModule
-    PRIVATE
-    clangQuery
-  )
-endif()

diff  --git a/clang-tools-extra/clang-tidy/custom/CustomTidyModule.cpp 
b/clang-tools-extra/clang-tidy/custom/CustomTidyModule.cpp
deleted file mode 100644
index 6aea3e4de4c6d..0000000000000
--- a/clang-tools-extra/clang-tidy/custom/CustomTidyModule.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "../ClangTidy.h"
-#include "../ClangTidyModule.h"
-#include "../ClangTidyModuleRegistry.h"
-#include "../ClangTidyOptions.h"
-#include "QueryCheck.h"
-#include "llvm/ADT/SmallSet.h"
-#include "llvm/ADT/SmallString.h"
-#include "llvm/ADT/StringRef.h"
-#include <cassert>
-#include <memory>
-
-namespace clang::tidy {
-namespace custom {
-
-class CustomModule : public ClangTidyModule {
-public:
-  void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {}
-};
-
-// We need to register the checks more flexibly than builtin modules. The 
checks
-// will changed dynamically when switching to 
diff erent source file.
-extern void registerCustomChecks(const ClangTidyOptions &Options,
-                                 ClangTidyCheckFactories &Factories) {
-  static llvm::SmallSet<llvm::SmallString<32>, 8> CustomCheckNames{};
-  if (!Options.CustomChecks.has_value() || Options.CustomChecks->empty())
-    return;
-  for (const llvm::SmallString<32> &Name : CustomCheckNames)
-    Factories.eraseCheck(Name);
-  for (const ClangTidyOptions::CustomCheckValue &V :
-       Options.CustomChecks.value()) {
-    llvm::SmallString<32> Name = llvm::StringRef{"custom-" + V.Name};
-    Factories.registerCheckFactory(
-        // add custom- prefix to avoid conflicts with builtin checks
-        Name, [&V](llvm::StringRef Name, ClangTidyContext *Context) {
-          return std::make_unique<custom::QueryCheck>(Name, V, Context);
-        });
-    CustomCheckNames.insert(std::move(Name));
-  }
-}
-
-} // namespace custom
-
-// Register the CustomTidyModule using this statically initialized variable.
-static ClangTidyModuleRegistry::Add<custom::CustomModule>
-    X("custom-module", "Adds custom query lint checks.");
-
-// This anchor is used to force the linker to link in the generated object file
-// and thus register the AlteraModule.
-volatile int CustomModuleAnchorSource = 0; // NOLINT 
(misc-use-internal-linkage)
-
-} // namespace clang::tidy

diff  --git a/clang-tools-extra/clang-tidy/custom/QueryCheck.cpp 
b/clang-tools-extra/clang-tidy/custom/QueryCheck.cpp
deleted file mode 100644
index f83c138fbfaf5..0000000000000
--- a/clang-tools-extra/clang-tidy/custom/QueryCheck.cpp
+++ /dev/null
@@ -1,146 +0,0 @@
-//===--- QueryCheck.cpp - clang-tidy 
--------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "QueryCheck.h"
-#include "../../clang-query/Query.h"
-#include "../../clang-query/QueryParser.h"
-#include "clang/ASTMatchers/ASTMatchers.h"
-#include "clang/ASTMatchers/Dynamic/VariantValue.h"
-#include "clang/Basic/DiagnosticIDs.h"
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/StringRef.h"
-#include <string>
-
-using namespace clang::ast_matchers;
-
-namespace clang::tidy::custom {
-
-static void emitConfigurationDiag(ClangTidyContext *Context, StringRef Message,
-                                  StringRef CheckName) {
-  Context->configurationDiag("%0 in '%1'", DiagnosticIDs::Warning)
-      << Message << CheckName;
-}
-
-static SmallVector<ast_matchers::dynamic::DynTypedMatcher>
-parseQuery(const ClangTidyOptions::CustomCheckValue &V,
-           ClangTidyContext *Context) {
-  SmallVector<ast_matchers::dynamic::DynTypedMatcher> Matchers{};
-  clang::query::QuerySession QS({});
-  llvm::StringRef QueryStringRef{V.Query};
-  while (!QueryStringRef.empty()) {
-    query::QueryRef Q = query::QueryParser::parse(QueryStringRef, QS);
-    switch (Q->Kind) {
-    case query::QK_Match: {
-      const auto &MatchQuery = llvm::cast<query::MatchQuery>(*Q);
-      Matchers.push_back(MatchQuery.Matcher);
-      break;
-    }
-    case query::QK_Let: {
-      const auto &LetQuery = llvm::cast<query::LetQuery>(*Q);
-      LetQuery.run(llvm::errs(), QS);
-      break;
-    }
-    case query::QK_NoOp: {
-      const auto &NoOpQuery = llvm::cast<query::NoOpQuery>(*Q);
-      NoOpQuery.run(llvm::errs(), QS);
-      break;
-    }
-    case query::QK_Invalid: {
-      const auto &InvalidQuery = llvm::cast<query::InvalidQuery>(*Q);
-      emitConfigurationDiag(Context, InvalidQuery.ErrStr, V.Name);
-      return {};
-    }
-    // FIXME: TODO
-    case query::QK_File: {
-      emitConfigurationDiag(Context, "unsupported query kind 'File'", V.Name);
-      return {};
-    }
-    case query::QK_DisableOutputKind: {
-      emitConfigurationDiag(
-          Context, "unsupported query kind 'DisableOutputKind'", V.Name);
-      return {};
-    }
-    case query::QK_EnableOutputKind: {
-      emitConfigurationDiag(
-          Context, "unsupported query kind 'EnableOutputKind'", V.Name);
-      return {};
-    }
-    case query::QK_SetOutputKind: {
-      emitConfigurationDiag(Context, "unsupported query kind 'SetOutputKind'",
-                            V.Name);
-      return {};
-    }
-    case query::QK_SetTraversalKind: {
-      emitConfigurationDiag(
-          Context, "unsupported query kind 'SetTraversalKind'", V.Name);
-      return {};
-    }
-    case query::QK_SetBool: {
-      emitConfigurationDiag(Context, "unsupported query kind 'SetBool'",
-                            V.Name);
-      return {};
-    }
-    case query::QK_Help: {
-      emitConfigurationDiag(Context, "unsupported query kind 'Help'", V.Name);
-      return {};
-    }
-    case query::QK_Quit: {
-      emitConfigurationDiag(Context, "unsupported query kind 'Quit'", V.Name);
-      return {};
-    }
-    }
-    QueryStringRef = Q->RemainingContent;
-  }
-  return Matchers;
-}
-
-QueryCheck::QueryCheck(llvm::StringRef Name,
-                       const ClangTidyOptions::CustomCheckValue &V,
-                       ClangTidyContext *Context)
-    : ClangTidyCheck(Name, Context) {
-  for (const ClangTidyOptions::CustomCheckDiag &D : V.Diags) {
-    auto DiagnosticIdIt =
-        Diags
-            .try_emplace(D.Level.value_or(DiagnosticIDs::Warning),
-                         llvm::StringMap<llvm::SmallVector<std::string>>{})
-            .first;
-    auto DiagMessageIt =
-        DiagnosticIdIt->getSecond()
-            .try_emplace(D.BindName, llvm::SmallVector<std::string>{})
-            .first;
-    DiagMessageIt->second.emplace_back(D.Message);
-  }
-  Matchers = parseQuery(V, Context);
-}
-
-void QueryCheck::registerMatchers(MatchFinder *Finder) {
-  for (const ast_matchers::dynamic::DynTypedMatcher &M : Matchers)
-    Finder->addDynamicMatcher(M, this);
-}
-
-void QueryCheck::check(const MatchFinder::MatchResult &Result) {
-  auto Emit = [this](const DiagMaps &DiagMaps, const std::string &BindName,
-                     const DynTypedNode &Node, DiagnosticIDs::Level Level) {
-    DiagMaps::const_iterator DiagMapIt = DiagMaps.find(Level);
-    if (DiagMapIt == DiagMaps.end())
-      return;
-    const BindNameMapToDiagMessage &BindNameMap = DiagMapIt->second;
-    BindNameMapToDiagMessage::const_iterator BindNameMapIt =
-        BindNameMap.find(BindName);
-    if (BindNameMapIt == BindNameMap.end())
-      return;
-    for (const std::string &Message : BindNameMapIt->second)
-      diag(Node.getSourceRange().getBegin(), Message, Level);
-  };
-  for (const auto &[Name, Node] : Result.Nodes.getMap())
-    Emit(Diags, Name, Node, DiagnosticIDs::Warning);
-  // place Note last, otherwise it will not be emitted
-  for (const auto &[Name, Node] : Result.Nodes.getMap())
-    Emit(Diags, Name, Node, DiagnosticIDs::Note);
-}
-} // namespace clang::tidy::custom

diff  --git a/clang-tools-extra/clang-tidy/custom/QueryCheck.h 
b/clang-tools-extra/clang-tidy/custom/QueryCheck.h
deleted file mode 100644
index 3dcdc518736c2..0000000000000
--- a/clang-tools-extra/clang-tidy/custom/QueryCheck.h
+++ /dev/null
@@ -1,41 +0,0 @@
-//===--- QueryCheck.h - clang-tidy ------------------------------*- C++ 
-*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM 
Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CUSTOM_QUERYCHECK_H
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CUSTOM_QUERYCHECK_H
-
-#include "../ClangTidyCheck.h"
-#include "clang/ASTMatchers/Dynamic/VariantValue.h"
-#include "clang/Basic/DiagnosticIDs.h"
-#include "llvm/ADT/DenseMap.h"
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/StringMap.h"
-
-namespace clang::tidy::custom {
-
-/// Implement of Clang-Query based check.
-/// Not directly visible to users.
-class QueryCheck : public ClangTidyCheck {
-public:
-  QueryCheck(llvm::StringRef Name, const ClangTidyOptions::CustomCheckValue &V,
-             ClangTidyContext *Context);
-  void registerMatchers(ast_matchers::MatchFinder *Finder) override;
-  void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
-
-private:
-  llvm::SmallVector<ast_matchers::dynamic::DynTypedMatcher> Matchers;
-  using BindNameMapToDiagMessage =
-      llvm::StringMap<llvm::SmallVector<std::string>>;
-  using DiagMaps =
-      llvm::DenseMap<DiagnosticIDs::Level, BindNameMapToDiagMessage>;
-  DiagMaps Diags;
-};
-
-} // namespace clang::tidy::custom
-
-#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_CUSTOM_QUERYCHECK_H

diff  --git a/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp 
b/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
index a2fa0edbbbea3..35ea1b5714b84 100644
--- a/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
+++ b/clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp
@@ -60,8 +60,6 @@ Configuration files:
   Checks                       - Same as '--checks'. Additionally, the list of
                                  globs can be specified as a list instead of a
                                  string.
-  CustomChecks                 - Array of user defined checks based on
-                                 Clang-Query syntax.
   ExcludeHeaderFilterRegex     - Same as '--exclude-header-filter'.
   ExtraArgs                    - Same as '--extra-arg'.
   ExtraArgsBefore              - Same as '--extra-arg-before'.
@@ -346,15 +344,6 @@ all of the checks.
 )"),
                                    cl::init(false), 
cl::cat(ClangTidyCategory));
 
-static cl::opt<bool> ExperimentalCustomChecks("experimental-custom-checks",
-                                              desc(R"(
-Enable experimental clang-query based
-custom checks.
-see https://clang.llvm.org/extra/clang-tidy/QueryBasedCustomChecks.html.
-)"),
-                                              cl::init(false),
-                                              cl::cat(ClangTidyCategory));
-
 namespace clang::tidy {
 
 static void printStats(const ClangTidyStats &Stats) {
@@ -642,8 +631,7 @@ int clangTidyMain(int argc, const char **argv) {
   ClangTidyOptions EffectiveOptions = OptionsProvider->getOptions(FilePath);
 
   std::vector<std::string> EnabledChecks =
-      getCheckNames(EffectiveOptions, AllowEnablingAnalyzerAlphaCheckers,
-                    ExperimentalCustomChecks);
+      getCheckNames(EffectiveOptions, AllowEnablingAnalyzerAlphaCheckers);
 
   if (ExplainConfig) {
     // FIXME: Show other ClangTidyOptions' fields, like ExtraArg.
@@ -675,8 +663,7 @@ int clangTidyMain(int argc, const char **argv) {
 
   if (DumpConfig) {
     EffectiveOptions.CheckOptions =
-        getCheckOptions(EffectiveOptions, AllowEnablingAnalyzerAlphaCheckers,
-                        ExperimentalCustomChecks);
+        getCheckOptions(EffectiveOptions, AllowEnablingAnalyzerAlphaCheckers);
     ClangTidyOptions OptionsToDump =
         ClangTidyOptions::getDefaults().merge(EffectiveOptions, 0);
     filterCheckOptions(OptionsToDump, EnabledChecks);
@@ -687,8 +674,8 @@ int clangTidyMain(int argc, const char **argv) {
   if (VerifyConfig) {
     std::vector<ClangTidyOptionsProvider::OptionsSource> RawOptions =
         OptionsProvider->getRawOptions(FileName);
-    ChecksAndOptions Valid = getAllChecksAndOptions(
-        AllowEnablingAnalyzerAlphaCheckers, ExperimentalCustomChecks);
+    ChecksAndOptions Valid =
+        getAllChecksAndOptions(AllowEnablingAnalyzerAlphaCheckers);
     bool AnyInvalid = false;
     for (const auto &[Opts, Source] : RawOptions) {
       if (Opts.Checks)
@@ -725,9 +712,9 @@ int clangTidyMain(int argc, const char **argv) {
   llvm::InitializeAllTargetMCs();
   llvm::InitializeAllAsmParsers();
 
-  ClangTidyContext Context(
-      std::move(OwningOptionsProvider), AllowEnablingAnalyzerAlphaCheckers,
-      EnableModuleHeadersParsing, ExperimentalCustomChecks);
+  ClangTidyContext Context(std::move(OwningOptionsProvider),
+                           AllowEnablingAnalyzerAlphaCheckers,
+                           EnableModuleHeadersParsing);
   std::vector<ClangTidyError> Errors =
       runClangTidy(Context, OptionsParser->getCompilations(), PathList, BaseFS,
                    FixNotes, EnableCheckProfile, ProfilePrefix, Quiet);

diff  --git a/clang-tools-extra/docs/ReleaseNotes.rst 
b/clang-tools-extra/docs/ReleaseNotes.rst
index a4652a7a54858..3f403c42a168a 100644
--- a/clang-tools-extra/docs/ReleaseNotes.rst
+++ b/clang-tools-extra/docs/ReleaseNotes.rst
@@ -127,10 +127,6 @@ Improvements to clang-tidy
   by default, greatly improving performance. This behavior is disabled if the
   `SystemHeaders` option is enabled.
 
-- :program:`clang-tidy` now supports query based custom checks by 
`CustomChecks`
-  configuration option.
-  :doc:`Query Based Custom Check Document <clang-tidy/QueryBasedCustomChecks>`
-
 - The :program:`run-clang-tidy.py` and :program:`clang-tidy-
diff .py` scripts
   now run checks in parallel by default using all available hardware threads.
   Both scripts display the number of threads being used in their output.

diff  --git a/clang-tools-extra/docs/clang-tidy/Contributing.rst 
b/clang-tools-extra/docs/clang-tidy/Contributing.rst
index ad7f22381a3ca..ad12b2343d1e9 100644
--- a/clang-tools-extra/docs/clang-tidy/Contributing.rst
+++ b/clang-tools-extra/docs/clang-tidy/Contributing.rst
@@ -33,9 +33,6 @@ If CMake is configured with 
``CLANG_TIDY_ENABLE_STATIC_ANALYZER=NO``,
 :program:`clang-tidy` will not be built with support for the
 ``clang-analyzer-*`` checks or the ``mpi-*`` checks.
 
-If CMake is configured with ``CLANG_TIDY_ENABLE_QUERY_BASED_CUSTOM_CHECKS=NO``,
-:program:`clang-tidy` will not be built with support for query based checks. 
-
 
 .. _AST Matchers: https://clang.llvm.org/docs/LibASTMatchers.html
 .. _PPCallbacks: https://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html

diff  --git a/clang-tools-extra/docs/clang-tidy/QueryBasedCustomChecks.rst 
b/clang-tools-extra/docs/clang-tidy/QueryBasedCustomChecks.rst
deleted file mode 100644
index f10d15412fe16..0000000000000
--- a/clang-tools-extra/docs/clang-tidy/QueryBasedCustomChecks.rst
+++ /dev/null
@@ -1,82 +0,0 @@
-====================================
-Query Based Custom Clang-Tidy Checks
-====================================
-
-Introduction
-============
-
-This page provides examples of how to add query based custom checks for
-:program:`clang-tidy`.
-
-Custom checks are based on :program:`clang-query` syntax. Every custom checks
-will be registered in `custom` module to avoid name conflict. They can be
-enabled or disabled by the checks option like the built-in checks.
-
-Custom checks support inheritance from parent configurations like other
-configuration items.
-
-Goals: easy to write, cross platform, multiple versions supported toolkit for
-custom clang-tidy rules.
-Non-Goals: complex checks, performance, fix-its, etc.
-
-Configuration
-=============
-
-`CustomChecks` is a list of custom checks. Each check must contain
-  - Name: check name can be used in `-checks` option.
-  - Query: `clang-query` string
-  - Diagnostic: list of diagnostics to be reported.
-    - BindName: name of the node to be bound in `Query`.
-    - Message: message to be reported.
-    - Level: severity of the diagnostic, the possible values are `Note`, 
`Warning`.
-
-`CustomChecks` can be configured by `Checks` option in the configuration file.
-
-Example
-=======
-
-.. code-block:: yaml
-
-  Checks: -*,custom-call-main-function
-  CustomChecks:
-    - Name: call-main-function
-      Query: |
-          match callExpr(
-            callee(
-              functionDecl(isMain()).bind("fn")
-            )
-          ).bind("callee")
-      Diagnostic:
-        - BindName: fn
-          Message: main function.
-          Level: Note
-        - BindName: callee
-          Message: call to main function.
-          Level: Warning
-
-.. code-block:: c++
-
-  int main(); // note: main function.
-
-  void bar() {
-    main(); // warning: call to main function. [custom-call-main-function]
-  }
-
-Matters Need Attention
-======================
-
-This feature needs to be explicitly enabled by `--experimental-custom-checks`
-because it is currently in the experimental stage. Welcome to submit any
-suggestions in the `link 
<https://discourse.llvm.org/t/support-query-based-clang-tidy-external-check/85331>`_.
-
-During the experimental stage, the required configuration structure of this
-feature may be changed in the future. Future changes will be as
-forward-compatible as possible, but this is not a guarantee.
-
-In subsequent versions, including non-experimental stage, the query statements
-will change at any time. The essence of :program:`clang-query` is to parse the
-query string and dynamically generate the corresponding AST matcher.
-Therefore, its functionality is entirely dependent on the functions provided by
-the AST matcher library.
-The ast matcher will change along with the changes in the clang AST.
-Please refer to `ast matcher reference 
<https://clang.llvm.org/docs/LibASTMatchersReference.html>`_.

diff  --git a/clang-tools-extra/docs/clang-tidy/index.rst 
b/clang-tools-extra/docs/clang-tidy/index.rst
index bd2c40e948f34..3abd6639c3025 100644
--- a/clang-tools-extra/docs/clang-tidy/index.rst
+++ b/clang-tools-extra/docs/clang-tidy/index.rst
@@ -10,7 +10,6 @@ See also:
    :maxdepth: 1
 
    List of Clang-Tidy Checks <checks/list>
-   Query Based Custom Clang-Tidy Checks <QueryBasedCustomChecks>
    Clang-tidy IDE/Editor Integrations <Integrations>
    Getting Involved <Contributing>
    External Clang-Tidy Examples <ExternalClang-TidyExamples>
@@ -305,8 +304,6 @@ An overview of all the command-line options:
     Checks                       - Same as '--checks'. Additionally, the list 
of
                                    globs can be specified as a list instead of 
a
                                    string.
-    CustomChecks                 - List of user defined checks based on
-                                   Clang-Query syntax.
     ExcludeHeaderFilterRegex     - Same as '--exclude-header-filter'.
     ExtraArgs                    - Same as '--extra-arg'.
     ExtraArgsBefore              - Same as '--extra-arg-before'.

diff  --git a/clang-tools-extra/test/clang-tidy/check_clang_tidy.py 
b/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
index 183b33f135be8..26f8cbaeb9f31 100755
--- a/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
+++ b/clang-tools-extra/test/clang-tidy/check_clang_tidy.py
@@ -209,7 +209,6 @@ def run_clang_tidy(self) -> str:
         args = (
             [
                 "clang-tidy",
-                "--experimental-custom-checks",
                 self.temp_file_name,
             ]
             + [

diff  --git 
a/clang-tools-extra/test/clang-tidy/checkers/custom/Inputs/clang-tidy.yml 
b/clang-tools-extra/test/clang-tidy/checkers/custom/Inputs/clang-tidy.yml
deleted file mode 100644
index b4524e247feae..0000000000000
--- a/clang-tools-extra/test/clang-tidy/checkers/custom/Inputs/clang-tidy.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-CustomChecks:
-  - Name: test-diag-level
-    Query: |
-      match varDecl(
-          hasType(asString("long")),
-          hasTypeLoc(typeLoc().bind("long"))
-      ).bind("decl")
-    Diagnostic:
-      - BindName: long
-        Message: use 'int' instead of 'long'
-        Level: Warning
-      - BindName: decl
-        Message: declaration of 'long'
-        Level: Note
-  - Name: test-let-bind
-    Query: |
-      let expr varDecl(isStaticStorageClass()).bind("vd")
-      match expr
-    Diagnostic:
-      - BindName: vd
-        Message: find static variable
-        Level: Warning

diff  --git 
a/clang-tools-extra/test/clang-tidy/checkers/custom/Inputs/incorrect-clang-tidy.yml
 
b/clang-tools-extra/test/clang-tidy/checkers/custom/Inputs/incorrect-clang-tidy.yml
deleted file mode 100644
index b94ba32997029..0000000000000
--- 
a/clang-tools-extra/test/clang-tidy/checkers/custom/Inputs/incorrect-clang-tidy.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-CustomChecks:
-  - Name: test-let-bind-invalid-1
-    Query: |
-      let expr varDecl(isStaticStorageClass()).bind("vd")
-      match expr
-      set output print
-    Diagnostic:
-      - BindName: vd
-        Message: find static variable
-        Level: Warning
-  - Name: test-let-bind-invalid-2
-    Query: |
-      match varDeclInvalid(isStaticStorageClass()).bind("vd")
-    Diagnostic:
-      - BindName: vd
-        Message: find static variable
-        Level: Warning
-  - Name: test-let-bind-valid
-    Query: |
-      let expr varDecl(isStaticStorageClass()).bind("vd")
-      match expr
-    Diagnostic:
-      - BindName: vd
-        Message: find static variable
-        Level: Warning

diff  --git 
a/clang-tools-extra/test/clang-tidy/checkers/custom/query-incorrect-query.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/custom/query-incorrect-query.cpp
deleted file mode 100644
index f9a73750b4c3e..0000000000000
--- 
a/clang-tools-extra/test/clang-tidy/checkers/custom/query-incorrect-query.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-// RUN: %check_clang_tidy %s custom-* %t 
--config-file=%S/Inputs/incorrect-clang-tidy.yml
-
-// CHECK-MESSAGES: warning: 1:1: Matcher not found: varDeclInvalid in 
'test-let-bind-invalid-2' [clang-tidy-config]
-// CHECK-MESSAGES: warning: unsupported query kind 'SetOutputKind' in 
'test-let-bind-invalid-1' [clang-tidy-config]
-
-static int S;
-// CHECK-MESSAGES: [[@LINE-1]]:1: warning: find static variable 
[custom-test-let-bind-valid]

diff  --git 
a/clang-tools-extra/test/clang-tidy/checkers/custom/query-partially-active-check.cpp
 
b/clang-tools-extra/test/clang-tidy/checkers/custom/query-partially-active-check.cpp
deleted file mode 100644
index 962313ddb587b..0000000000000
--- 
a/clang-tools-extra/test/clang-tidy/checkers/custom/query-partially-active-check.cpp
+++ /dev/null
@@ -1,5 +0,0 @@
-// RUN: %check_clang_tidy %s custom-test-let-bind %t 
--config-file=%S/Inputs/clang-tidy.yml
-
-extern long E;
-static int S;
-// CHECK-MESSAGES: [[@LINE-1]]:1: warning: find static variable 
[custom-test-let-bind]

diff  --git a/clang-tools-extra/test/clang-tidy/checkers/custom/query.cpp 
b/clang-tools-extra/test/clang-tidy/checkers/custom/query.cpp
deleted file mode 100644
index e9a27301bd611..0000000000000
--- a/clang-tools-extra/test/clang-tidy/checkers/custom/query.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-// RUN: %check_clang_tidy %s custom-* %t --config-file=%S/Inputs/clang-tidy.yml
-
-extern long E;
-// CHECK-MESSAGES: [[@LINE-1]]:8: warning: use 'int' instead of 'long' 
[custom-test-diag-level]
-// CHECK-MESSAGES: [[@LINE-2]]:1: note: declaration of 'long'
-static int S;
-// CHECK-MESSAGES: [[@LINE-1]]:1: warning: find static variable 
[custom-test-let-bind]

diff  --git 
a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/append-clang-tidy.yml
 
b/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/append-clang-tidy.yml
deleted file mode 100644
index 5b25ec061ba63..0000000000000
--- 
a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/append-clang-tidy.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-InheritParentConfig: true
-CustomChecks:
-  - Name: function-decl
-    Query: match functionDecl().bind("func")
-    Diagnostic:
-      - BindName: func
-        Message: find function decl
-        Level: Warning

diff  --git 
a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/empty-clang-tidy.yml
 
b/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/empty-clang-tidy.yml
deleted file mode 100644
index 2e9a13e720f4e..0000000000000
--- 
a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/empty-clang-tidy.yml
+++ /dev/null
@@ -1 +0,0 @@
-InheritParentConfig: false

diff  --git 
a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/override-clang-tidy.yml
 
b/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/override-clang-tidy.yml
deleted file mode 100644
index ec243b8396ea8..0000000000000
--- 
a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/override-clang-tidy.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-CustomChecks:
-  - Name: avoid-long-type
-    Query: |
-      match varDecl(
-          hasType(asString("long")),
-          hasTypeLoc(typeLoc().bind("long"))
-      )
-    Diagnostic:
-      - BindName: long
-        Message: use 'int' instead of 'long' override
-        Level: Warning

diff  --git 
a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/root-clang-tidy.yml
 
b/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/root-clang-tidy.yml
deleted file mode 100644
index 861ed10be1a5f..0000000000000
--- 
a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/root-clang-tidy.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-CustomChecks:
-  - Name: avoid-long-type
-    Query: |
-      match varDecl(
-          hasType(asString("long")),
-          hasTypeLoc(typeLoc().bind("long"))
-      )
-    Diagnostic:
-      - BindName: long
-        Message: use 'int' instead of 'long'
-        Level: Warning

diff  --git 
a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/vfsoverlay.yaml
 
b/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/vfsoverlay.yaml
deleted file mode 100644
index 2b507f60092c3..0000000000000
--- 
a/clang-tools-extra/test/clang-tidy/infrastructure/Inputs/custom-query-check/vfsoverlay.yaml
+++ /dev/null
@@ -1,44 +0,0 @@
-version: 0
-roots:
-  - name: OUT_DIR
-    type: directory
-    contents:
-      - name: .clang-tidy
-        type: file
-        external-contents: INPUT_DIR/root-clang-tidy.yml
-      - name: main.cpp
-        type: file
-        external-contents: MAIN_FILE
-      - name: subdir
-        type: directory
-        contents:
-          - name: main.cpp
-            type: file
-            external-contents: MAIN_FILE
-      - name: subdir-override
-        type: directory
-        contents:
-          - name: main.cpp
-            type: file
-            external-contents: MAIN_FILE
-          - name: .clang-tidy
-            type: file
-            external-contents: INPUT_DIR/override-clang-tidy.yml
-      - name: subdir-empty
-        type: directory
-        contents:
-          - name: main.cpp
-            type: file
-            external-contents: MAIN_FILE
-          - name: .clang-tidy
-            type: file
-            external-contents: INPUT_DIR/empty-clang-tidy.yml
-      - name: subdir-append
-        type: directory
-        contents:
-          - name: main.cpp
-            type: file
-            external-contents: MAIN_FILE
-          - name: .clang-tidy
-            type: file
-            external-contents: INPUT_DIR/append-clang-tidy.yml

diff  --git 
a/clang-tools-extra/test/clang-tidy/infrastructure/custom-query-check-not-enable.cpp
 
b/clang-tools-extra/test/clang-tidy/infrastructure/custom-query-check-not-enable.cpp
deleted file mode 100644
index dc160fbbbcd9e..0000000000000
--- 
a/clang-tools-extra/test/clang-tidy/infrastructure/custom-query-check-not-enable.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-// RUN: sed -e "s:INPUT_DIR:%S/Inputs/custom-query-check:g" -e 
"s:OUT_DIR:%t:g" -e "s:MAIN_FILE:%s:g" 
%S/Inputs/custom-query-check/vfsoverlay.yaml > %t.yaml
-// RUN: clang-tidy --allow-no-checks %t/main.cpp -checks='-*,custom-*' 
-vfsoverlay %t.yaml | FileCheck %s --check-prefix=CHECK
-// RUN: clang-tidy --allow-no-checks %t/main.cpp -checks='-*,custom-*' 
-vfsoverlay %t.yaml --list-checks | FileCheck %s --check-prefix=LIST-CHECK
-// REQUIRES: shell
-
-
-long V;
-// CHECK: No checks enabled.
-
-void f();
-// CHECK-SUB-DIR-APPEND: [[@LINE-1]]:1: warning: find function decl 
[custom-function-decl]
-
-// LIST-CHECK: Enabled checks:
-// LIST-CHECK-EMPTY:

diff  --git 
a/clang-tools-extra/test/clang-tidy/infrastructure/custom-query-check.cpp 
b/clang-tools-extra/test/clang-tidy/infrastructure/custom-query-check.cpp
deleted file mode 100644
index 8d0bc2bed180d..0000000000000
--- a/clang-tools-extra/test/clang-tidy/infrastructure/custom-query-check.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-// RUN: sed -e "s:INPUT_DIR:%S/Inputs/custom-query-check:g" -e 
"s:OUT_DIR:%t:g" -e "s:MAIN_FILE:%s:g" 
%S/Inputs/custom-query-check/vfsoverlay.yaml > %t.yaml
-// RUN: clang-tidy --experimental-custom-checks %t/main.cpp 
-checks='-*,custom-*' -vfsoverlay %t.yaml | FileCheck %s 
--check-prefix=CHECK-SAME-DIR
-// RUN: clang-tidy --experimental-custom-checks %t/subdir/main.cpp 
-checks='-*,custom-*' -vfsoverlay %t.yaml | FileCheck %s 
--check-prefix=CHECK-SUB-DIR-BASE
-// RUN: clang-tidy --experimental-custom-checks %t/subdir-override/main.cpp 
-checks='-*,custom-*' -vfsoverlay %t.yaml | FileCheck %s 
--check-prefix=CHECK-SUB-DIR-OVERRIDE
-// RUN: clang-tidy --experimental-custom-checks %t/subdir-empty/main.cpp 
-checks='-*,custom-*' -vfsoverlay %t.yaml --allow-no-checks | FileCheck %s 
--check-prefix=CHECK-SUB-DIR-EMPTY
-// RUN: clang-tidy --experimental-custom-checks %t/subdir-append/main.cpp 
-checks='-*,custom-*' -vfsoverlay %t.yaml | FileCheck %s 
--check-prefix=CHECK-SUB-DIR-APPEND
-// RUN: clang-tidy --experimental-custom-checks %t/subdir-append/main.cpp 
-checks='-*,custom-*' -vfsoverlay %t.yaml --list-checks | FileCheck %s 
--check-prefix=LIST-CHECK
-// RUN: clang-tidy --experimental-custom-checks %t/subdir-append/main.cpp 
-checks='-*,custom-*' -vfsoverlay %t.yaml --dump-config | FileCheck %s 
--check-prefix=DUMP-CONFIG
-// REQUIRES: shell
-
-
-long V;
-// CHECK-SAME-DIR: [[@LINE-1]]:1: warning: use 'int' instead of 'long' 
[custom-avoid-long-type]
-// CHECK-SUB-DIR-BASE: [[@LINE-2]]:1: warning: use 'int' instead of 'long' 
[custom-avoid-long-type]
-// CHECK-SUB-DIR-OVERRIDE: [[@LINE-3]]:1: warning: use 'int' instead of 'long' 
override [custom-avoid-long-type]
-// CHECK-SUB-DIR-EMPTY: No checks enabled.
-// CHECK-SUB-DIR-APPEND: [[@LINE-5]]:1: warning: use 'int' instead of 'long' 
[custom-avoid-long-type]
-
-void f();
-// CHECK-SUB-DIR-APPEND: [[@LINE-1]]:1: warning: find function decl 
[custom-function-decl]
-
-// LIST-CHECK: Enabled checks:
-// LIST-CHECK:   custom-avoid-long-type
-// LIST-CHECK:   custom-function-decl
-
-// DUMP-CONFIG: CustomChecks:
-// DUMP-CONFIG: - Name: avoid-long-type
-// DUMP-CONFIG:   Query: |
-// DUMP-CONFIG:     match varDecl(
-// DUMP-CONFIG:       hasType(asString("long")),
-// DUMP-CONFIG:       hasTypeLoc(typeLoc().bind("long"))
-// DUMP-CONFIG:     )
-// DUMP-CONFIG:   Diagnostic:
-// DUMP-CONFIG:    - BindName: long
-// DUMP-CONFIG:      Message: |
-// DUMP-CONFIG:           use 'int' instead of 'long'
-// DUMP-CONFIG:      Level:           Warning
-// DUMP-CONFIG: - Name: function-decl
-// DUMP-CONFIG:   Query: |
-// DUMP-CONFIG:     match functionDecl().bind("func")
-// DUMP-CONFIG:   Diagnostic:
-// DUMP-CONFIG:    - BindName: func
-// DUMP-CONFIG:      Message: |
-// DUMP-CONFIG:        find function decl
-// DUMP-CONFIG:   Level: Warning

diff  --git a/clang-tools-extra/unittests/clang-tidy/CMakeLists.txt 
b/clang-tools-extra/unittests/clang-tidy/CMakeLists.txt
index a3f20f5c1359f..3304924d39757 100644
--- a/clang-tools-extra/unittests/clang-tidy/CMakeLists.txt
+++ b/clang-tools-extra/unittests/clang-tidy/CMakeLists.txt
@@ -54,7 +54,6 @@ target_link_libraries(ClangTidyTests
   PRIVATE
   clangTidy
   clangTidyAndroidModule
-  clangTidyCustomModule
   clangTidyGoogleModule
   clangTidyMiscModule
   clangTidyLLVMModule

diff  --git a/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h 
b/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h
index 195d6a6c60918..89f0f9f2a1f19 100644
--- a/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h
+++ b/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h
@@ -94,8 +94,7 @@ runCheckOnCode(StringRef Code, std::vector<ClangTidyError> 
*Errors = nullptr,
   ClangTidyOptions Options = ExtraOptions;
   Options.Checks = "*";
   ClangTidyContext Context(std::make_unique<DefaultOptionsProvider>(
-                               ClangTidyGlobalOptions(), Options),
-                           false, false, false);
+      ClangTidyGlobalOptions(), Options));
   ClangTidyDiagnosticConsumer DiagConsumer(Context);
   auto DiagOpts = std::make_unique<DiagnosticOptions>();
   DiagnosticsEngine DE(DiagnosticIDs::create(), *DiagOpts, &DiagConsumer,


        
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to