r248904 - clang-format: Use Rewriter again to write the output files.

Daniel Jasper via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 30 12:50:16 PDT 2015


Ah, very sorry, I was looking at the wrong patch. So I did make the same
change :-)

On Wed, Sep 30, 2015 at 9:30 PM, Daniel Jasper <djasper at google.com> wrote:

> cmake build hopefully fixed in r248929. How is the patch you have attached
> related?
>
> On Wed, Sep 30, 2015 at 9:24 PM, Daniel Jasper <djasper at google.com> wrote:
>
>> This breaks your *build*? How?
>>
>> On Wed, Sep 30, 2015 at 9:19 PM, Jan Vesely <jan.vesely at rutgers.edu>
>> wrote:
>>
>>> Hi,
>>> I think this change breaks cmake build. Please consider the attached fix
>>> (I can't push atm).
>>>
>>> thank you,
>>> Jan
>>>
>>> On Wed, Sep 30, 2015 at 8:59 AM, Daniel Jasper via cfe-commits <
>>> cfe-commits at lists.llvm.org> wrote:
>>>
>>>> Author: djasper
>>>> Date: Wed Sep 30 08:59:29 2015
>>>> New Revision: 248904
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=248904&view=rev
>>>> Log:
>>>> clang-format: Use Rewriter again to write the output files.
>>>>
>>>> This has two advantages:
>>>> 1. Atomic writes.
>>>> 2. Proper handling of line endings (hopefully solving llvm.org/PR24999
>>>>
>>>> Modified:
>>>>     cfe/trunk/tools/clang-format/ClangFormat.cpp
>>>>
>>>> Modified: cfe/trunk/tools/clang-format/ClangFormat.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format/ClangFormat.cpp?rev=248904&r1=248903&r2=248904&view=diff
>>>>
>>>> ==============================================================================
>>>> --- cfe/trunk/tools/clang-format/ClangFormat.cpp (original)
>>>> +++ cfe/trunk/tools/clang-format/ClangFormat.cpp Wed Sep 30 08:59:29
>>>> 2015
>>>> @@ -19,6 +19,7 @@
>>>>  #include "clang/Basic/SourceManager.h"
>>>>  #include "clang/Basic/Version.h"
>>>>  #include "clang/Format/Format.h"
>>>> +#include "clang/Rewrite/Core/Rewriter.h"
>>>>  #include "llvm/ADT/StringMap.h"
>>>>  #include "llvm/Support/CommandLine.h"
>>>>  #include "llvm/Support/Debug.h"
>>>> @@ -77,7 +78,7 @@ AssumeFileName("assume-filename",
>>>>                 cl::desc("When reading from stdin, clang-format assumes
>>>> this\n"
>>>>                          "filename to look for a style config file
>>>> (with\n"
>>>>                          "-style=file) and to determine the language."),
>>>> -               cl::cat(ClangFormatCategory));
>>>> +               cl::init("<stdin>"), cl::cat(ClangFormatCategory));
>>>>
>>>>  static cl::opt<bool> Inplace("i",
>>>>                               cl::desc("Inplace edit <file>s, if
>>>> specified."),
>>>> @@ -109,8 +110,7 @@ namespace format {
>>>>
>>>>  static FileID createInMemoryFile(StringRef FileName, MemoryBuffer
>>>> *Source,
>>>>                                   SourceManager &Sources, FileManager
>>>> &Files) {
>>>> -  const FileEntry *Entry = Files.getVirtualFile(FileName == "-" ?
>>>> "<stdin>" :
>>>> -                                                    FileName,
>>>> +  const FileEntry *Entry = Files.getVirtualFile(FileName,
>>>>
>>>>  Source->getBufferSize(), 0);
>>>>    Sources.overrideFileContents(Entry, Source, true);
>>>>    return Sources.createFileID(Entry, SourceLocation(), SrcMgr::C_User);
>>>> @@ -132,7 +132,7 @@ static bool fillRanges(MemoryBuffer *Cod
>>>>        IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs),
>>>>        new DiagnosticOptions);
>>>>    SourceManager Sources(Diagnostics, Files);
>>>> -  FileID ID = createInMemoryFile("-", Code, Sources, Files);
>>>> +  FileID ID = createInMemoryFile("<irrelevant>", Code, Sources, Files);
>>>>    if (!LineRanges.empty()) {
>>>>      if (!Offsets.empty() || !Lengths.empty()) {
>>>>        llvm::errs() << "error: cannot use -lines with
>>>> -offset/-length\n";
>>>> @@ -255,8 +255,8 @@ static bool format(StringRef FileName) {
>>>>
>>>>    bool IncompleteFormat = false;
>>>>    Replaces = tooling::mergeReplacements(
>>>> -      Replaces,
>>>> -      reformat(FormatStyle, ChangedCode, Ranges, FileName,
>>>> &IncompleteFormat));
>>>> +      Replaces, reformat(FormatStyle, ChangedCode, Ranges,
>>>> AssumedFileName,
>>>> +                         &IncompleteFormat));
>>>>    if (OutputXML) {
>>>>      llvm::outs() << "<?xml version='1.0'?>\n<replacements "
>>>>                      "xml:space='preserve' incomplete_format='"
>>>> @@ -269,27 +269,26 @@ static bool format(StringRef FileName) {
>>>>      outputReplacementsXML(Replaces);
>>>>      llvm::outs() << "</replacements>\n";
>>>>    } else {
>>>> -    std::string FormattedCode =
>>>> -        applyAllReplacements(Code->getBuffer(), Replaces);
>>>> +    FileManager Files((FileSystemOptions()));
>>>> +    DiagnosticsEngine Diagnostics(
>>>> +        IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs),
>>>> +        new DiagnosticOptions);
>>>> +    SourceManager Sources(Diagnostics, Files);
>>>> +    FileID ID = createInMemoryFile(AssumedFileName, Code.get(),
>>>> Sources, Files);
>>>> +    Rewriter Rewrite(Sources, LangOptions());
>>>> +    tooling::applyAllReplacements(Replaces, Rewrite);
>>>>      if (Inplace) {
>>>>        if (FileName == "-")
>>>>          llvm::errs() << "error: cannot use -i when reading from
>>>> stdin.\n";
>>>> -      else {
>>>> -        std::error_code EC;
>>>> -        raw_fd_ostream FileOut(FileName, EC, llvm::sys::fs::F_Text);
>>>> -        if (EC) {
>>>> -          llvm::errs() << EC.message() << "\n";
>>>> -          return true;
>>>> -        }
>>>> -        FileOut << FormattedCode;
>>>> -      }
>>>> +      else if (Rewrite.overwriteChangedFiles())
>>>> +        return true;
>>>>      } else {
>>>>        if (Cursor.getNumOccurrences() != 0)
>>>>          outs() << "{ \"Cursor\": "
>>>>                 << tooling::shiftedCodePosition(Replaces, Cursor)
>>>>                 << ", \"IncompleteFormat\": "
>>>>                 << (IncompleteFormat ? "true" : "false") << " }\n";
>>>> -      outs() << FormattedCode;
>>>> +      Rewrite.getEditBuffer(ID).write(outs());
>>>>      }
>>>>    }
>>>>    return false;
>>>> @@ -350,3 +349,4 @@ int main(int argc, const char **argv) {
>>>>    }
>>>>    return Error ? 1 : 0;
>>>>  }
>>>> +
>>>>
>>>>
>>>> _______________________________________________
>>>> cfe-commits mailing list
>>>> cfe-commits at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150930/816626bc/attachment-0001.html>


More information about the cfe-commits mailing list