On 05/08/2015 03:51 PM, Daniel Jasper wrote:
Author: djasper
Date: Fri May 8 08:51:14 2015
New Revision: 236851
URL: http://llvm.org/viewvc/llvm-project?rev=236851&view=rev
Log:
clang-format: Several improvements around formatting braced lists.
In particular:
* If the difference between the longest and shortest element, we copped
out of column format completely. Now, we instead allow to arrange
these in a single column, essentially enforcing a one-per-line format.
* Allow column layout even if there are braced lists. Especially, if
there are many short lists, this can be beneficial. The bad case,
where there is a long nested init list is usually caught as we now
limit the length difference of the longest and shortest element.
Hi Daniel,
this change caused the following formatting change in Polly:
- Value *Args[] = {SubFn, SubFnParam, NumberOfThreads, LB, UB, Stride};
+ Value *Args[] = {SubFn,
+ SubFnParam,
+ NumberOfThreads,
+ LB,
+ UB,
+ Stride};
I will change this in Polly. It might be useful to add some test case
that shows that in certain cases we want to format a list in column
layout even though it fits a single line.
Best,
Tobias
Modified:
cfe/trunk/lib/Format/FormatToken.cpp
cfe/trunk/unittests/Format/FormatTest.cpp
Modified: cfe/trunk/lib/Format/FormatToken.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/FormatToken.cpp?rev=236851&r1=236850&r2=236851&view=diff
==============================================================================
--- cfe/trunk/lib/Format/FormatToken.cpp (original)
+++ cfe/trunk/lib/Format/FormatToken.cpp Fri May 8 08:51:14 2015
@@ -199,13 +199,14 @@ void CommaSeparatedList::precomputeForma
// create a column layout. If it has a nested list, column layout ensures
one
// list element per line. If the difference between the shortest and longest
// element is too large, column layout would create too much whitespace.
- if (HasNestedBracedList || Commas.size() < 5 || Token->NestingLevel != 0 ||
- MaxItemLength - MinItemLength > 10)
+ if (Commas.size() < 5 || Token->NestingLevel != 0)
return;
// We can never place more than ColumnLimit / 3 items in a row (because of
the
// spaces and the comma).
- for (unsigned Columns = 1; Columns <= Style.ColumnLimit / 3; ++Columns) {
+ unsigned MaxColumns =
+ MaxItemLength - MinItemLength > 10 ? 1 : Style.ColumnLimit / 3;
+ for (unsigned Columns = 1; Columns <= MaxColumns; ++Columns) {
ColumnFormat Format;
Format.Columns = Columns;
Format.ColumnSizes.resize(Columns);
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=236851&r1=236850&r2=236851&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Fri May 8 08:51:14 2015
@@ -6223,9 +6223,18 @@ TEST_F(FormatTest, LayoutCxx11BraceIniti
ExtraSpaces);
verifyFormat(
"std::vector<MyValues> aaaaaaaaaaaaaaaaaaa{\n"
- " aaaaaaa, aaaaaaaaaa, aaaaa, aaaaaaaaaaaaaaa, aaa, aaaaaaaaaa, a,\n"
- " aaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaa,\n"
- " aaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaa, aaaaaaa, a};");
+ " aaaaaaa,\n"
+ " aaaaaaaaaa,\n"
+ " aaaaa,\n"
+ " aaaaaaaaaaaaaaa,\n"
+ " aaa,\n"
+ " aaaaaaaaaa,\n"
+ " a,\n"
+ " aaaaaaaaaaaaaaaaaaaaa,\n"
+ " aaaaaaaaaaaa,\n"
+ " aaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaa,\n"
+ " aaaaaaa,\n"
+ " a};");
verifyFormat("vector<int> foo = { ::SomeGlobalFunction() };", ExtraSpaces);
}
@@ -6263,6 +6272,19 @@ TEST_F(FormatTest, FormatsBracedListsInC
verifyFormat("vector<int> aaaaaaaaaaaaaaaaaaaaaa = {\n"
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};",
getLLVMStyleWithColumns(43));
+ verifyFormat(
+ "static unsigned SomeValues[10][3] = {\n"
+ " {1, 4, 0}, {4, 9, 0}, {4, 5, 9}, {8, 5, 4}, {1, 8, 4},\n"
+ " {10, 1, 6}, {11, 0, 9}, {2, 11, 9}, {5, 2, 9}, {11, 2, 7}};");
+ verifyFormat("static auto fields = new vector<string>{\n"
+ " \"aaaaaaaaaaaaa\",\n"
+ " \"aaaaaaaaaaaaa\",\n"
+ " \"aaaaaaaaaaaa\",\n"
+ " \"aaaaaaaaaaaaaa\",\n"
+ " \"aaaaaaaaaaaaaaaaaaaaaaaaa\",\n"
+ " \"aaaaaaaaaaaa\",\n"
+ " \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n"
+ "};");
// Trailing commas.
verifyFormat("vector<int> x = {\n"
@@ -6277,15 +6299,15 @@ TEST_F(FormatTest, FormatsBracedListsInC
" 1, 1, 1, 1,\n"
" /**/ /**/};",
getLLVMStyleWithColumns(39));
+
+ // With nested lists, we should either format one item per line or all nested
+ // lists one on line.
+ // FIXME: For some nested lists, we can do better.
verifyFormat("return {{aaaaaaaaaaaaaaaaaaaaa},\n"
" {aaaaaaaaaaaaaaaaaaa},\n"
" {aaaaaaaaaaaaaaaaaaaaa},\n"
" {aaaaaaaaaaaaaaaaa}};",
getLLVMStyleWithColumns(60));
-
- // With nested lists, we should either format one item per line or all nested
- // lists one one line.
- // FIXME: For some nested lists, we can do better.
verifyFormat(
"SomeStruct my_struct_array = {\n"
" {aaaaaa, aaaaaaaa, aaaaaaaaaa, aaaaaaaaa, aaaaaaaaa, aaaaaaaaaa,\n"
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits