diff options
-rw-r--r-- | clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h | 44 | ||||
-rw-r--r-- | clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp | 2 |
2 files changed, 27 insertions, 19 deletions
diff --git a/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h b/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h index 181e6c209e8..c1149c8ea46 100644 --- a/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h +++ b/clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h @@ -22,21 +22,23 @@ namespace clang { namespace tidy { namespace test { -class TestPPAction : public PreprocessOnlyAction { +class TestClangTidyAction : public ASTFrontendAction { public: - TestPPAction(ClangTidyCheck &Check, ClangTidyContext *Context) - : Check(Check), Context(Context) {} + TestClangTidyAction(ClangTidyCheck &Check, ast_matchers::MatchFinder &Finder, + ClangTidyContext &Context) + : Check(Check), Finder(Finder), Context(Context) {} private: - bool BeginSourceFileAction(CompilerInstance &Compiler, - llvm::StringRef file_name) override { - Context->setSourceManager(&Compiler.getSourceManager()); + std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &Compiler, + StringRef File) override { + Context.setSourceManager(&Compiler.getSourceManager()); Check.registerPPCallbacks(Compiler); - return true; + return Finder.newASTConsumer(); } ClangTidyCheck &Check; - ClangTidyContext *Context; + ast_matchers::MatchFinder &Finder; + ClangTidyContext &Context; }; template <typename T> @@ -50,19 +52,25 @@ std::string runCheckOnCode(StringRef Code, ClangTidyGlobalOptions(), Options)); ClangTidyDiagnosticConsumer DiagConsumer(Context); T Check("test-check", &Context); - std::vector<std::string> ArgCXX11(1, "-std=c++11"); - ArgCXX11.insert(ArgCXX11.end(), ExtraArgs.begin(), ExtraArgs.end()); - - if (!tooling::runToolOnCodeWithArgs(new TestPPAction(Check, &Context), Code, - ArgCXX11, Filename)) - return ""; ast_matchers::MatchFinder Finder; Check.registerMatchers(&Finder); - std::unique_ptr<tooling::FrontendActionFactory> Factory( - tooling::newFrontendActionFactory(&Finder)); - if (!tooling::runToolOnCodeWithArgs(Factory->create(), Code, ArgCXX11, - Filename)) + + std::vector<std::string> ArgCXX11(1, "clang-tidy"); + ArgCXX11.push_back("-fsyntax-only"); + ArgCXX11.push_back("-std=c++11"); + ArgCXX11.insert(ArgCXX11.end(), ExtraArgs.begin(), ExtraArgs.end()); + ArgCXX11.push_back(Filename.str()); + llvm::IntrusiveRefCntPtr<FileManager> files( + new FileManager(FileSystemOptions())); + tooling::ToolInvocation Invocation( + ArgCXX11, new TestClangTidyAction(Check, Finder, Context), files.get()); + SmallString<16> FileNameStorage; + StringRef FileNameRef = Filename.toNullTerminatedStringRef(FileNameStorage); + Invocation.mapVirtualFile(FileNameRef, Code); + Invocation.setDiagnosticConsumer(&DiagConsumer); + if (!Invocation.run()) return ""; + DiagConsumer.finish(); tooling::Replacements Fixes; for (const ClangTidyError &Error : Context.getErrors()) diff --git a/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp b/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp index a9afb820271..00e9034456b 100644 --- a/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp +++ b/clang-tools-extra/unittests/clang-tidy/LLVMModuleTest.cpp @@ -114,7 +114,7 @@ TEST(LLVMHeaderGuardCheckTest, FixHeaderGuards) { "LLVM_ADT_FOO_H\n#endif \\ \n// " "LLVM_ADT_FOO_H\n", "include/llvm/ADT/foo.h", - /*ExpectedWarnings=*/0)); + /*ExpectedWarnings=*/1)); EXPECT_EQ("#ifndef LLVM_ADT_FOO_H\n#define LLVM_ADT_FOO_H\n#endif /* " "LLVM_ADT_FOO_H\\ \n FOO */", |