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;
 }