diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-04-25 14:49:37 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-04-25 14:49:37 +0000 |
commit | 39808ff9015d8ebe252c7f6e7741595a5416d404 (patch) | |
tree | a4666269bc6dab1be61ef4555019e53088e68095 /clang/lib/Tooling/Tooling.cpp | |
parent | c435fb07dd625fcd7be1aee0ffb4ce348a316a28 (diff) | |
download | bcm5719-llvm-39808ff9015d8ebe252c7f6e7741595a5416d404.tar.gz bcm5719-llvm-39808ff9015d8ebe252c7f6e7741595a5416d404.zip |
Improve ownership of ASTUnits in libTooling by using std::unique_ptr.
llvm-svn: 207229
Diffstat (limited to 'clang/lib/Tooling/Tooling.cpp')
-rw-r--r-- | clang/lib/Tooling/Tooling.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/clang/lib/Tooling/Tooling.cpp b/clang/lib/Tooling/Tooling.cpp index 25ade338e1a..9bd85ee357a 100644 --- a/clang/lib/Tooling/Tooling.cpp +++ b/clang/lib/Tooling/Tooling.cpp @@ -371,29 +371,29 @@ int ClangTool::run(ToolAction *Action) { namespace { class ASTBuilderAction : public ToolAction { - std::vector<ASTUnit *> &ASTs; + std::vector<std::unique_ptr<ASTUnit>> &ASTs; public: - ASTBuilderAction(std::vector<ASTUnit *> &ASTs) : ASTs(ASTs) {} + ASTBuilderAction(std::vector<std::unique_ptr<ASTUnit>> &ASTs) : ASTs(ASTs) {} bool runInvocation(CompilerInvocation *Invocation, FileManager *Files, DiagnosticConsumer *DiagConsumer) override { // FIXME: This should use the provided FileManager. - ASTUnit *AST = ASTUnit::LoadFromCompilerInvocation( + std::unique_ptr<ASTUnit> AST(ASTUnit::LoadFromCompilerInvocation( Invocation, CompilerInstance::createDiagnostics( &Invocation->getDiagnosticOpts(), DiagConsumer, - /*ShouldOwnClient=*/false)); + /*ShouldOwnClient=*/false))); if (!AST) return false; - ASTs.push_back(AST); + ASTs.push_back(std::move(AST)); return true; } }; } -int ClangTool::buildASTs(std::vector<ASTUnit *> &ASTs) { +int ClangTool::buildASTs(std::vector<std::unique_ptr<ASTUnit>> &ASTs) { ASTBuilderAction Action(ASTs); return run(&Action); } @@ -408,7 +408,7 @@ ASTUnit *buildASTFromCodeWithArgs(const Twine &Code, SmallString<16> FileNameStorage; StringRef FileNameRef = FileName.toNullTerminatedStringRef(FileNameStorage); - std::vector<ASTUnit *> ASTs; + std::vector<std::unique_ptr<ASTUnit>> ASTs; ASTBuilderAction Action(ASTs); ToolInvocation Invocation(getSyntaxOnlyToolArgs(Args, FileNameRef), &Action, 0); @@ -419,7 +419,7 @@ ASTUnit *buildASTFromCodeWithArgs(const Twine &Code, return 0; assert(ASTs.size() == 1); - return ASTs[0]; + return ASTs[0].release(); } } // end namespace tooling |