]> granicus.if.org Git - clang/commit
Makes whitespace management more consistent.
authorManuel Klimek <klimek@google.com>
Wed, 22 May 2013 12:51:29 +0000 (12:51 +0000)
committerManuel Klimek <klimek@google.com>
Wed, 22 May 2013 12:51:29 +0000 (12:51 +0000)
commite573c3f7fc40e813559ab4ff1e7eec4f66f1a50f
treea5fcc07cb4cd9aeebc47bf84d36f977423e32479
parent6e6efa7ec880559b7dd3096423b2345c0ff21c4c
Makes whitespace management more consistent.

Instead of selectively storing some changes and directly generating
replacements for others, we now notify the WhitespaceManager of the
whitespace before every token (and optionally with more changes inside
tokens).

Then, we run over all whitespace in the very end in original source
order, where we have all information available to correctly align
comments and escaped newlines.

The future direction is to pull more of the comment alignment
implementation that is now in the BreakableToken into the
WhitespaceManager.

This fixes a bug when aligning comments or escaped newlines in unwrapped
lines that are handled out of order:
  #define A \
    f({     \
      g();  \
    });
... now gets correctly layouted.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182467 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Format/BreakableToken.cpp
lib/Format/BreakableToken.h
lib/Format/Format.cpp
lib/Format/TokenAnnotator.cpp
lib/Format/TokenAnnotator.h
lib/Format/WhitespaceManager.cpp
lib/Format/WhitespaceManager.h
unittests/Format/FormatTest.cpp