diff options
-rw-r--r-- | test/Format/inplace.cpp | 263 | ||||
-rw-r--r-- | tools/clang-format/ClangFormat.cpp | 13 |
2 files changed, 272 insertions, 4 deletions
diff --git a/test/Format/inplace.cpp b/test/Format/inplace.cpp new file mode 100644 index 0000000000..cc218f3118 --- /dev/null +++ b/test/Format/inplace.cpp @@ -0,0 +1,263 @@ +// Regression test to check that clang-format does not leave behind temporary +// files on Windows when doing in-place formatting. +// RUN: rm %T/inplace* +// RUN: cp %s %T/inplace.cpp +// RUN: clang-format -style=LLVM -i %T/inplace.cpp +// RUN: ls %T > %T/files.txt +// RUN: FileCheck -strict-whitespace -input-file=%T/files.txt %s + +// CHECK-NOT: RF{{.*}}.TMP + +// The file needs to be larger than 16kiB so that Windows creates a real file +// mapping object for it. + int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; +int this_is_my_int_there_are_many_like_it_but_this_one_is_mine; diff --git a/tools/clang-format/ClangFormat.cpp b/tools/clang-format/ClangFormat.cpp index 941f90396d..ac0d0a8512 100644 --- a/tools/clang-format/ClangFormat.cpp +++ b/tools/clang-format/ClangFormat.cpp @@ -236,8 +236,15 @@ static void outputReplacementsXML(const Replacements &Replaces) { // Returns true on error. static bool format(StringRef FileName) { + if (!OutputXML && Inplace && FileName == "-") { + errs() << "error: cannot use -i when reading from stdin.\n"; + return false; + } + // On Windows, overwriting a file with an open file mapping doesn't work, + // so read the whole file into memory when formatting in-place. ErrorOr<std::unique_ptr<MemoryBuffer>> CodeOrErr = - MemoryBuffer::getFileOrSTDIN(FileName); + !OutputXML && Inplace ? MemoryBuffer::getFileAsStream(FileName) : + MemoryBuffer::getFileOrSTDIN(FileName); if (std::error_code EC = CodeOrErr.getError()) { errs() << EC.message() << "\n"; return true; @@ -297,9 +304,7 @@ static bool format(StringRef FileName) { Rewriter Rewrite(Sources, LangOptions()); tooling::applyAllReplacements(Replaces, Rewrite); if (Inplace) { - if (FileName == "-") - errs() << "error: cannot use -i when reading from stdin.\n"; - else if (Rewrite.overwriteChangedFiles()) + if (Rewrite.overwriteChangedFiles()) return true; } else { if (Cursor.getNumOccurrences() != 0) |