diff --git a/clang-tools-extra/clang-tidy/ClangTidyCheck.h b/clang-tools-extra/clang-tidy/ClangTidyCheck.h --- a/clang-tools-extra/clang-tidy/ClangTidyCheck.h +++ b/clang-tools-extra/clang-tidy/ClangTidyCheck.h @@ -204,6 +204,39 @@ const LangOptions &getLangOpts() const { return Context->getLangOpts(); } }; +/// Helper class for clang-tidy checks that only register when in `Cc mode. +class CClangTidyCheck : public ClangTidyCheck { + using ClangTidyCheck::ClangTidyCheck; + bool isLanguageVersionSupported(const LangOptions &LangOpts) const final { + return LangOpts.C99; + } +}; + +/// Helper class for clang-tidy checks that only register when in `c++` mode. +class CppClangTidyCheck : public ClangTidyCheck { + using ClangTidyCheck::ClangTidyCheck; + bool isLanguageVersionSupported(const LangOptions &LangOpts) const final { + return LangOpts.CPlusPlus; + } +}; + +/// Helper class for clang-tidy checks that only register when in `c++11` mode. +class Cpp11ClangTidyCheck : public ClangTidyCheck { + using ClangTidyCheck::ClangTidyCheck; + bool isLanguageVersionSupported(const LangOptions &LangOpts) const final { + return LangOpts.CPlusPlus11; + } +}; + +/// Helper class for clang-tidy checks that only register when in `Objective-c` +/// mode. +class ObjCClangTidyCheck : public ClangTidyCheck { + using ClangTidyCheck::ClangTidyCheck; + bool isLanguageVersionSupported(const LangOptions &LangOpts) const final { + return LangOpts.ObjC; + } +}; + } // namespace tidy } // namespace clang