From 39808ff9015d8ebe252c7f6e7741595a5416d404 Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Fri, 25 Apr 2014 14:49:37 +0000 Subject: Improve ownership of ASTUnits in libTooling by using std::unique_ptr. llvm-svn: 207229 --- clang/lib/Tooling/Tooling.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'clang/lib/Tooling/Tooling.cpp') 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 &ASTs; + std::vector> &ASTs; public: - ASTBuilderAction(std::vector &ASTs) : ASTs(ASTs) {} + ASTBuilderAction(std::vector> &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 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 &ASTs) { +int ClangTool::buildASTs(std::vector> &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 ASTs; + std::vector> 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 -- cgit v1.2.3