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:30:56 PDT 2015


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/6a39e8b1/attachment.html>


More information about the cfe-commits mailing list