summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorHaojian Wu <hokein@google.com>2017-10-20 12:37:16 +0000
committerHaojian Wu <hokein@google.com>2017-10-20 12:37:16 +0000
commitd6aede0fad127fa8eedd339e9594bf30cbd98294 (patch)
treec1c1943bd1c6d2b935275eac90fcf96040c6b200 /tools
parenta312801e78a7627965158838eae1fb9a10487af7 (diff)
[clang-refactor] Add "-Inplace" option to the commandline tool.
Summary: Change clang-refactor default behavior to print the new code after refactoring (instead of editing the source files), which would make it easier to use and debug the refactoring action. Reviewers: arphaman, ioeric Reviewed By: arphaman Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D39092 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@316212 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/clang-refactor/ClangRefactor.cpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/tools/clang-refactor/ClangRefactor.cpp b/tools/clang-refactor/ClangRefactor.cpp
index ed9bf5ed28..523c3a6220 100644
--- a/tools/clang-refactor/ClangRefactor.cpp
+++ b/tools/clang-refactor/ClangRefactor.cpp
@@ -40,6 +40,11 @@ static cl::OptionCategory CommonRefactorOptions("Refactoring options");
static cl::opt<bool> Verbose("v", cl::desc("Use verbose output"),
cl::cat(cl::GeneralCategory),
cl::sub(*cl::AllSubCommands));
+
+static cl::opt<bool> Inplace("i", cl::desc("Inplace edit <file>s"),
+ cl::cat(cl::GeneralCategory),
+ cl::sub(*cl::AllSubCommands));
+
} // end namespace opts
namespace {
@@ -436,13 +441,18 @@ public:
return true;
}
- std::error_code EC;
- llvm::raw_fd_ostream OS(File, EC, llvm::sys::fs::F_Text);
- if (EC) {
- llvm::errs() << EC.message() << "\n";
- return true;
+ if (opts::Inplace) {
+ std::error_code EC;
+ llvm::raw_fd_ostream OS(File, EC, llvm::sys::fs::F_Text);
+ if (EC) {
+ llvm::errs() << EC.message() << "\n";
+ return true;
+ }
+ OS << *Result;
+ continue;
}
- OS << *Result;
+
+ llvm::outs() << *Result;
}
return false;
}