From a452db4d0ffa4cf6c2a861ef5806f30caebe2bf9 Mon Sep 17 00:00:00 2001 From: Eric Liu Date: Mon, 11 Jul 2016 13:53:21 +0000 Subject: Changes related to tooling::applyAllReplacements interface change in D21601. Summary: this patch contains changes related to the interface change from http://reviews.llvm.org/D21601. Only submit this patch after D21601 is submitted. Reviewers: djasper, klimek Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D21602 llvm-svn: 275063 --- .../include-fixer/tool/ClangIncludeFixer.cpp | 48 ++++++++++++++-------- 1 file changed, 32 insertions(+), 16 deletions(-) (limited to 'clang-tools-extra/include-fixer/tool/ClangIncludeFixer.cpp') diff --git a/clang-tools-extra/include-fixer/tool/ClangIncludeFixer.cpp b/clang-tools-extra/include-fixer/tool/ClangIncludeFixer.cpp index 7bccb4d9e56..98df22025de 100644 --- a/clang-tools-extra/include-fixer/tool/ClangIncludeFixer.cpp +++ b/clang-tools-extra/include-fixer/tool/ClangIncludeFixer.cpp @@ -209,13 +209,20 @@ int includeFixerMain(int argc, const char **argv) { return 1; } - tooling::Replacements Replacements = - clang::include_fixer::createInsertHeaderReplacements( - Code->getBuffer(), FilePath, Context.getHeaders().front(), - InsertStyle); - std::string ChangedCode = - tooling::applyAllReplacements(Code->getBuffer(), Replacements); - llvm::outs() << ChangedCode; + auto Replacements = clang::include_fixer::createInsertHeaderReplacements( + Code->getBuffer(), FilePath, Context.getHeaders().front(), InsertStyle); + if (!Replacements) { + errs() << "Failed to create header insertion replacement: " + << llvm::toString(Replacements.takeError()) << "\n"; + return 1; + } + auto ChangedCode = + tooling::applyAllReplacements(Code->getBuffer(), *Replacements); + if (!ChangedCode) { + llvm::errs() << llvm::toString(ChangedCode.takeError()) << "\n"; + return 1; + } + llvm::outs() << *ChangedCode; return 0; } @@ -250,17 +257,22 @@ int includeFixerMain(int argc, const char **argv) { return 1; } - tooling::Replacements Replacements = - clang::include_fixer::createInsertHeaderReplacements( - /*Code=*/Buffer.get()->getBuffer(), FilePath, - Context.getHeaders().front(), InsertStyle); + // FIXME: Rank the results and pick the best one instead of the first one. + auto Replacements = clang::include_fixer::createInsertHeaderReplacements( + /*Code=*/Buffer.get()->getBuffer(), FilePath, + Context.getHeaders().front(), InsertStyle); + if (!Replacements) { + errs() << "Failed to create header insertion replacement: " + << llvm::toString(Replacements.takeError()) << "\n"; + return 1; + } if (!Quiet) llvm::errs() << "Added #include" << Context.getHeaders().front(); // Add missing namespace qualifiers to the unidentified symbol. if (Context.getSymbolRange().getLength() > 0) - Replacements.insert(Context.createSymbolReplacement(FilePath, 0)); + Replacements->insert(Context.createSymbolReplacement(FilePath, 0)); // Set up a new source manager for applying the resulting replacements. IntrusiveRefCntPtr DiagOpts(new DiagnosticOptions); @@ -270,15 +282,19 @@ int includeFixerMain(int argc, const char **argv) { Diagnostics.setClient(&DiagnosticPrinter, false); if (STDINMode) { - std::string ChangedCode = - tooling::applyAllReplacements(Code->getBuffer(), Replacements); - llvm::outs() << ChangedCode; + auto ChangedCode = + tooling::applyAllReplacements(Code->getBuffer(), *Replacements); + if (!ChangedCode) { + llvm::errs() << llvm::toString(ChangedCode.takeError()) << "\n"; + return 1; + } + llvm::outs() << *ChangedCode; return 0; } // Write replacements to disk. Rewriter Rewrites(SM, LangOptions()); - tooling::applyAllReplacements(Replacements, Rewrites); + tooling::applyAllReplacements(*Replacements, Rewrites); return Rewrites.overwriteChangedFiles(); } -- cgit v1.2.3