Index: cfe/trunk/lib/Format/ContinuationIndenter.cpp =================================================================== --- cfe/trunk/lib/Format/ContinuationIndenter.cpp +++ cfe/trunk/lib/Format/ContinuationIndenter.cpp @@ -606,7 +606,9 @@ // disallowing any further line breaks if there is no line break after the // opening parenthesis. Don't break if it doesn't conserve columns. if (Style.AlignAfterOpenBracket == FormatStyle::BAS_AlwaysBreak && - Previous.isOneOf(tok::l_paren, TT_TemplateOpener, tok::l_square) && + (Previous.isOneOf(tok::l_paren, TT_TemplateOpener, tok::l_square) || + (Previous.is(tok::l_brace) && Previous.BlockKind != BK_Block && + Style.Cpp11BracedListStyle)) && State.Column > getNewLineColumn(State) && (!Previous.Previous || !Previous.Previous->isOneOf( tok::kw_for, tok::kw_while, tok::kw_switch)) && Index: cfe/trunk/unittests/Format/FormatTest.cpp =================================================================== --- cfe/trunk/unittests/Format/FormatTest.cpp +++ cfe/trunk/unittests/Format/FormatTest.cpp @@ -7835,6 +7835,16 @@ "};", NoBinPacking); + NoBinPacking.AlignAfterOpenBracket = FormatStyle::BAS_AlwaysBreak; + EXPECT_EQ("static uint8 CddDp83848Reg[] = {\n" + " CDDDP83848_BMCR_REGISTER,\n" + " CDDDP83848_BMSR_REGISTER,\n" + " CDDDP83848_RBR_REGISTER};", + format("static uint8 CddDp83848Reg[] = {CDDDP83848_BMCR_REGISTER,\n" + " CDDDP83848_BMSR_REGISTER,\n" + " CDDDP83848_RBR_REGISTER};", + 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"