summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2015-06-17 17:47:30 +0000
committerReid Kleckner <reid@kleckner.net>2015-06-17 17:47:30 +0000
commit3df5dd4de79daab1da83119430f8396af783fd1f (patch)
treed68adb4bef57f1bf171e5d5010709683088c5151 /clang/lib
parent5d8a155cfd7b9fbd27e683b4bf40c5b1171a6bb1 (diff)
downloadbcm5719-llvm-3df5dd4de79daab1da83119430f8396af783fd1f.tar.gz
bcm5719-llvm-3df5dd4de79daab1da83119430f8396af783fd1f.zip
[fixit] Use overwriteChangedFiles() to deal with Windows mapped files
Fixes one instance of PR17960. llvm-svn: 239920
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Frontend/Rewrite/FixItRewriter.cpp7
-rw-r--r--clang/lib/Frontend/Rewrite/FrontendActions.cpp5
2 files changed, 10 insertions, 2 deletions
diff --git a/clang/lib/Frontend/Rewrite/FixItRewriter.cpp b/clang/lib/Frontend/Rewrite/FixItRewriter.cpp
index a3e14f9f020..dc787ac9557 100644
--- a/clang/lib/Frontend/Rewrite/FixItRewriter.cpp
+++ b/clang/lib/Frontend/Rewrite/FixItRewriter.cpp
@@ -81,6 +81,13 @@ bool FixItRewriter::WriteFixedFiles(
RewritesReceiver Rec(Rewrite);
Editor.applyRewrites(Rec);
+ if (FixItOpts->InPlace) {
+ // Overwriting open files on Windows is tricky, but the rewriter can do it
+ // for us.
+ Rewrite.overwriteChangedFiles();
+ return false;
+ }
+
for (iterator I = buffer_begin(), E = buffer_end(); I != E; ++I) {
const FileEntry *Entry = Rewrite.getSourceMgr().getFileEntryForID(I->first);
int fd;
diff --git a/clang/lib/Frontend/Rewrite/FrontendActions.cpp b/clang/lib/Frontend/Rewrite/FrontendActions.cpp
index 1b5eb2855be..dbc661b7190 100644
--- a/clang/lib/Frontend/Rewrite/FrontendActions.cpp
+++ b/clang/lib/Frontend/Rewrite/FrontendActions.cpp
@@ -48,9 +48,10 @@ FixItAction::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) {
namespace {
class FixItRewriteInPlace : public FixItOptions {
public:
+ FixItRewriteInPlace() { InPlace = true; }
+
std::string RewriteFilename(const std::string &Filename, int &fd) override {
- fd = -1;
- return Filename;
+ llvm_unreachable("don't call RewriteFilename for inplace rewrites");
}
};
OpenPOWER on IntegriCloud