diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2013-04-08 18:45:10 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2013-04-08 18:45:10 +0000 |
commit | 809500fc2c13c8173a16b052304d983864e4a1e1 (patch) | |
tree | 4fc2f184c499d106f29a386c452b49e5197bf63d /unittests/Tooling/ToolingTest.cpp | |
parent | be7c9ec198dcdb5bf73a35bfbb00b3333cb87909 (diff) |
Vendor import of clang trunk r178860:vendor/clang/clang-trunk-r178860
Notes
Notes:
svn path=/vendor/clang/dist/; revision=249261
svn path=/vendor/clang/clang-trunk-r178860/; revision=249262; tag=vendor/clang/clang-trunk-r178860
Diffstat (limited to 'unittests/Tooling/ToolingTest.cpp')
-rw-r--r-- | unittests/Tooling/ToolingTest.cpp | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/unittests/Tooling/ToolingTest.cpp b/unittests/Tooling/ToolingTest.cpp index d40c613dd059..a9319f296120 100644 --- a/unittests/Tooling/ToolingTest.cpp +++ b/unittests/Tooling/ToolingTest.cpp @@ -10,6 +10,7 @@ #include "clang/AST/ASTConsumer.h" #include "clang/AST/DeclCXX.h" #include "clang/AST/DeclGroup.h" +#include "clang/Frontend/CompilerInstance.h" #include "clang/Frontend/FrontendAction.h" #include "clang/Frontend/FrontendActions.h" #include "clang/Tooling/CompilationDatabase.h" @@ -97,9 +98,9 @@ TEST(runToolOnCode, FindsClassDecl) { } TEST(newFrontendActionFactory, CreatesFrontendActionFactoryFromType) { - llvm::OwningPtr<FrontendActionFactory> Factory( - newFrontendActionFactory<SyntaxOnlyAction>()); - llvm::OwningPtr<FrontendAction> Action(Factory->create()); + OwningPtr<FrontendActionFactory> Factory( + newFrontendActionFactory<SyntaxOnlyAction>()); + OwningPtr<FrontendAction> Action(Factory->create()); EXPECT_TRUE(Action.get() != NULL); } @@ -111,9 +112,9 @@ struct IndependentFrontendActionCreator { TEST(newFrontendActionFactory, CreatesFrontendActionFactoryFromFactoryType) { IndependentFrontendActionCreator Creator; - llvm::OwningPtr<FrontendActionFactory> Factory( - newFrontendActionFactory(&Creator)); - llvm::OwningPtr<FrontendAction> Action(Factory->create()); + OwningPtr<FrontendActionFactory> Factory( + newFrontendActionFactory(&Creator)); + OwningPtr<FrontendAction> Action(Factory->create()); EXPECT_TRUE(Action.get() != NULL); } @@ -162,5 +163,28 @@ TEST(newFrontendActionFactory, InjectsEndOfSourceFileCallback) { } #endif +struct SkipBodyConsumer : public clang::ASTConsumer { + /// Skip the 'skipMe' function. + virtual bool shouldSkipFunctionBody(Decl *D) { + FunctionDecl *F = dyn_cast<FunctionDecl>(D); + return F && F->getNameAsString() == "skipMe"; + } +}; + +struct SkipBodyAction : public clang::ASTFrontendAction { + virtual ASTConsumer *CreateASTConsumer(CompilerInstance &Compiler, + StringRef) { + Compiler.getFrontendOpts().SkipFunctionBodies = true; + return new SkipBodyConsumer; + } +}; + +TEST(runToolOnCode, TestSkipFunctionBody) { + EXPECT_TRUE(runToolOnCode(new SkipBodyAction, + "int skipMe() { an_error_here }")); + EXPECT_FALSE(runToolOnCode(new SkipBodyAction, + "int skipMeNot() { an_error_here }")); +} + } // end namespace tooling } // end namespace clang |