clang-format: Fix column layout with a comment in the last line.

Before:
  int aaaaa[] = {
      1, 2,
      3, // comment
      4, 5,
      6  // comment
  };

After:
  int aaaaa[] = {
      1, 2, 3, // comment
      4, 5, 6  // comment
  };

llvm-svn: 242299
This commit is contained in:
Daniel Jasper 2015-07-15 16:26:47 +00:00
parent 2e0133526e
commit 00fb2a1183
2 changed files with 7 additions and 1 deletions

View File

@ -183,7 +183,8 @@ void CommaSeparatedList::precomputeFormattingInfos(const FormatToken *Token) {
ItemEnd = Token->MatchingParen;
const FormatToken *NonCommentEnd = ItemEnd->getPreviousNonComment();
ItemLengths.push_back(CodePointsBetween(ItemBegin, NonCommentEnd));
if (Style.Cpp11BracedListStyle) {
if (Style.Cpp11BracedListStyle &&
!ItemEnd->Previous->isTrailingComment()) {
// In Cpp11 braced list style, the } and possibly other subsequent
// tokens will need to stay on a line with the last element.
while (ItemEnd->Next && !ItemEnd->Next->CanBreakBefore)

View File

@ -6307,6 +6307,11 @@ TEST_F(FormatTest, FormatsBracedListsInColumnLayout) {
" 1111111111, 2222222222, 33333333333, 4444444444, //\n"
" 111111111, 222222222, 3333333333, 444444444, //\n"
" 11111111, 22222222, 333333333, 44444444};");
// Trailing comment in the last line.
verifyFormat("int aaaaa[] = {\n"
" 1, 2, 3, // comment\n"
" 4, 5, 6 // comment\n"
"};");
// With nested lists, we should either format one item per line or all nested
// lists one on line.