diff options
| author | Manuel Klimek <klimek@google.com> | 2012-10-25 08:49:11 +0000 |
|---|---|---|
| committer | Manuel Klimek <klimek@google.com> | 2012-10-25 08:49:11 +0000 |
| commit | 8246d87db09f1cfbe13a76379bd550189496a925 (patch) | |
| tree | 587682a5361e57208ca246407ccf43fabcfd8d39 /clang/unittests/Tooling | |
| parent | f6562ed2d33b58514ad1de52a7155885b617e3cc (diff) | |
| download | bcm5719-llvm-8246d87db09f1cfbe13a76379bd550189496a925.tar.gz bcm5719-llvm-8246d87db09f1cfbe13a76379bd550189496a925.zip | |
Adds the possibility to inject a callback that's called after each translation unit is processed.
This is important when one wants to deduplicate results during one run over a translation unit by pointer identity of AST nodes.
llvm-svn: 166671
Diffstat (limited to 'clang/unittests/Tooling')
| -rw-r--r-- | clang/unittests/Tooling/ToolingTest.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/clang/unittests/Tooling/ToolingTest.cpp b/clang/unittests/Tooling/ToolingTest.cpp index fb3af2678c5..7846df3b934 100644 --- a/clang/unittests/Tooling/ToolingTest.cpp +++ b/clang/unittests/Tooling/ToolingTest.cpp @@ -130,5 +130,35 @@ TEST(ToolInvocation, TestMapVirtualFile) { EXPECT_TRUE(Invocation.run()); } +struct VerifyEndCallback : public EndOfSourceFileCallback { + VerifyEndCallback() : Called(0), Matched(false) {} + virtual void run() { + ++Called; + } + ASTConsumer *newASTConsumer() { + return new FindTopLevelDeclConsumer(&Matched); + } + unsigned Called; + bool Matched; +}; + +TEST(newFrontendActionFactory, InjectsEndOfSourceFileCallback) { + VerifyEndCallback EndCallback; + + FixedCompilationDatabase Compilations("/", std::vector<std::string>()); + std::vector<std::string> Sources; + Sources.push_back("/a.cc"); + Sources.push_back("/b.cc"); + ClangTool Tool(Compilations, Sources); + + Tool.mapVirtualFile("/a.cc", "void a() {}"); + Tool.mapVirtualFile("/b.cc", "void b() {}"); + + Tool.run(newFrontendActionFactory(&EndCallback, &EndCallback)); + + EXPECT_TRUE(EndCallback.Matched); + EXPECT_EQ(2u, EndCallback.Called); +} + } // end namespace tooling } // end namespace clang |

