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