diff --git a/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h b/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h --- a/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h +++ b/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h @@ -19,7 +19,6 @@ #include "clang/Tooling/Core/Replacement.h" #include "clang/Tooling/Refactoring.h" #include "clang/Tooling/Tooling.h" -#include "llvm/ADT/Optional.h" #include "llvm/Support/Path.h" #include #include @@ -67,7 +66,9 @@ // that check constructors can access the context (for example, through // `getLangOpts()`). CheckFactory::createChecks(&Context, Checks); + assert(!Checks.empty() && "No checks created"); for (auto &Check : Checks) { + assert(Check.get() && "Checks can't be null"); if (!Check->isLanguageVersionSupported(Context.getLangOpts())) continue; Check->registerMatchers(&Finder); @@ -89,6 +90,7 @@ const ClangTidyOptions &ExtraOptions = ClangTidyOptions(), std::map PathsToContent = std::map()) { + static_assert(sizeof...(CheckTypes) > 0, "No checks specified"); ClangTidyOptions Options = ExtraOptions; Options.Checks = "*"; ClangTidyContext Context(std::make_unique( @@ -120,7 +122,7 @@ llvm::IntrusiveRefCntPtr Files( new FileManager(FileSystemOptions(), InMemoryFileSystem)); - SmallVector, 1> Checks; + SmallVector, sizeof...(CheckTypes)> Checks; tooling::ToolInvocation Invocation( Args, std::make_unique>(Checks, Finder,