diff options
Diffstat (limited to 'clang-tools-extra/cpp11-migrate/LoopConvert/LoopConvert.cpp')
-rw-r--r-- | clang-tools-extra/cpp11-migrate/LoopConvert/LoopConvert.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/clang-tools-extra/cpp11-migrate/LoopConvert/LoopConvert.cpp b/clang-tools-extra/cpp11-migrate/LoopConvert/LoopConvert.cpp index 41337376780..b0e746e03b3 100644 --- a/clang-tools-extra/cpp11-migrate/LoopConvert/LoopConvert.cpp +++ b/clang-tools-extra/cpp11-migrate/LoopConvert/LoopConvert.cpp @@ -19,15 +19,25 @@ #include "clang/Frontend/FrontendActions.h" #include "clang/Tooling/Refactoring.h" #include "clang/Tooling/Tooling.h" +#include "clang/Rewrite/Core/Rewriter.h" using clang::ast_matchers::MatchFinder; using namespace clang::tooling; using namespace clang; -int LoopConvertTransform::apply(RiskLevel MaxRisk, +int LoopConvertTransform::apply(const FileContentsByPath &InputStates, + RiskLevel MaxRisk, const CompilationDatabase &Database, - const std::vector<std::string> &SourcePaths) { + const std::vector<std::string> &SourcePaths, + FileContentsByPath &ResultStates) { RefactoringTool LoopTool(Database, SourcePaths); + + for (FileContentsByPath::const_iterator I = InputStates.begin(), + E = InputStates.end(); + I != E; ++I) { + LoopTool.mapVirtualFile(I->first, I->second); + } + StmtAncestorASTVisitor ParentFinder; StmtGeneratedVarNameMap GeneratedDecls; ReplacedVarsMap ReplacedVars; @@ -53,11 +63,19 @@ int LoopConvertTransform::apply(RiskLevel MaxRisk, &RejectedChanges, MaxRisk, LFK_PseudoArray); Finder.addMatcher(makePseudoArrayLoopMatcher(), &PseudoarrrayLoopFixer); - if (int result = LoopTool.runAndSave(newFrontendActionFactory(&Finder))) { + + if (int result = LoopTool.run(newFrontendActionFactory(&Finder))) { llvm::errs() << "Error encountered during translation.\n"; return result; } + RewriterContainer Rewrite(LoopTool.getFiles()); + + // FIXME: Do something if some replacements didn't get applied? + LoopTool.applyAllReplacements(Rewrite.getRewriter()); + + collectResults(Rewrite.getRewriter(), ResultStates); + if (AcceptedChanges > 0) { setChangesMade(); } |