forked from OSchip/llvm-project
clang-format: Respect BinPackParameters in Cpp11BracedListStyle.
With BinPackParameters=false and Cpp11BracedListStyle=true (i.e. mostly for Chromium): Before: const Aaaaaa aaaaa = {aaaaa, bbbbb, ccccc, ddddd, eeeee, ffffff, ggggg, hhhhhh, iiiiii, jjjjjj, kkkkkk}; After: const Aaaaaa aaaaa = {aaaaa, bbbbb, ccccc, ddddd, eeeee, ffffff, ggggg, hhhhhh, iiiiii, jjjjjj, kkkkkk}; This fixes llvm.org/PR19359. I am not sure we'll want this in all cases in the long run, but I'll guess we'll get feedback on that. llvm-svn: 206458
This commit is contained in:
parent
057fa3a5a5
commit
ae8e0d8da9
|
@ -725,6 +725,7 @@ unsigned ContinuationIndenter::moveStateToNextToken(LineState &State,
|
|||
AvoidBinPacking = Current.BlockKind == BK_Block ||
|
||||
Current.Type == TT_ArrayInitializerLSquare ||
|
||||
Current.Type == TT_DictLiteral ||
|
||||
!Style.BinPackParameters ||
|
||||
(NextNoComment &&
|
||||
NextNoComment->Type == TT_DesignatedInitializerPeriod);
|
||||
} else {
|
||||
|
|
|
@ -132,6 +132,11 @@ void CommaSeparatedList::precomputeFormattingInfos(const FormatToken *Token) {
|
|||
if (!Token->MatchingParen || Token->isNot(tok::l_brace))
|
||||
return;
|
||||
|
||||
// In C++11 braced list style, we should not format in columns unless we allow
|
||||
// bin-packing of function parameters.
|
||||
if (Style.Cpp11BracedListStyle && !Style.BinPackParameters)
|
||||
return;
|
||||
|
||||
FormatToken *ItemBegin = Token->Next;
|
||||
SmallVector<bool, 8> MustBreakBeforeItem;
|
||||
|
||||
|
|
|
@ -5027,7 +5027,7 @@ TEST_F(FormatTest, LayoutBraceInitializersInReturnStatement) {
|
|||
verifyFormat("return (a)(b) {1, 2, 3};");
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, LayoutCxx11ConstructorBraceInitializers) {
|
||||
TEST_F(FormatTest, LayoutCxx11BraceInitializers) {
|
||||
verifyFormat("vector<int> x{1, 2, 3, 4};");
|
||||
verifyFormat("vector<int> x{\n"
|
||||
" 1, 2, 3, 4,\n"
|
||||
|
@ -5049,6 +5049,36 @@ TEST_F(FormatTest, LayoutCxx11ConstructorBraceInitializers) {
|
|||
"};");
|
||||
verifyFormat("vector<int> foo = {::SomeGlobalFunction()};");
|
||||
|
||||
// In combination with BinPackParameters = false.
|
||||
FormatStyle NoBinPacking = getLLVMStyle();
|
||||
NoBinPacking.BinPackParameters = false;
|
||||
verifyFormat("const Aaaaaa aaaaa = {aaaaa,\n"
|
||||
" bbbbb,\n"
|
||||
" ccccc,\n"
|
||||
" ddddd,\n"
|
||||
" eeeee,\n"
|
||||
" ffffff,\n"
|
||||
" ggggg,\n"
|
||||
" hhhhhh,\n"
|
||||
" iiiiii,\n"
|
||||
" jjjjjj,\n"
|
||||
" kkkkkk};",
|
||||
NoBinPacking);
|
||||
verifyFormat("const Aaaaaa aaaaa = {\n"
|
||||
" aaaaa,\n"
|
||||
" bbbbb,\n"
|
||||
" ccccc,\n"
|
||||
" ddddd,\n"
|
||||
" eeeee,\n"
|
||||
" ffffff,\n"
|
||||
" ggggg,\n"
|
||||
" hhhhhh,\n"
|
||||
" iiiiii,\n"
|
||||
" jjjjjj,\n"
|
||||
" kkkkkk,\n"
|
||||
"};",
|
||||
NoBinPacking);
|
||||
|
||||
// FIXME: The alignment of these trailing comments might be bad. Then again,
|
||||
// this might be utterly useless in real code.
|
||||
verifyFormat("Constructor::Constructor()\n"
|
||||
|
|
Loading…
Reference in New Issue