clang-replace: Afford applying replacements in memory
For users of libclangReplace, this patch affords the ability to apply
replacements in memory instead of writing to disk.
Differential Revision: http://llvm-reviews.chandlerc.com/D1519
llvm-svn: 189493
diff --git a/clang-tools-extra/clang-replace/tool/ClangReplaceMain.cpp b/clang-tools-extra/clang-replace/tool/ClangReplaceMain.cpp
index bd6adca..face37b 100644
--- a/clang-tools-extra/clang-replace/tool/ClangReplaceMain.cpp
+++ b/clang-tools-extra/clang-replace/tool/ClangReplaceMain.cpp
@@ -16,6 +16,7 @@
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/DiagnosticOptions.h"
#include "clang/Basic/SourceManager.h"
+#include "clang/Rewrite/Core/Rewriter.h"
#include "llvm/Support/CommandLine.h"
using namespace llvm;
@@ -81,6 +82,14 @@
if (!mergeAndDeduplicate(TUs, GroupedReplacements, SM))
return 1;
- if (!applyReplacements(GroupedReplacements, SM))
+ Rewriter DestRewriter(SM, LangOptions());
+ if (!applyReplacements(GroupedReplacements, DestRewriter)) {
+ errs() << "Failed to apply all replacements. No changes made.\n";
return 1;
+ }
+
+ if (!writeFiles(DestRewriter))
+ return 1;
+
+ return 0;
}