diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp index a8891fcc2f88..c2122ffb7d36 100644 --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/lib/Format/ContinuationIndenter.cpp @@ -340,7 +340,8 @@ unsigned ContinuationIndenter::addTokenOnNewLine(LineState &State, Penalty += Style.PenaltyBreakFirstLessLess; if (Current.is(tok::l_brace) && Current.BlockKind == BK_Block) { - State.Column = State.FirstIndent; + State.Column = + State.ParenLevel == 0 ? State.FirstIndent : State.Stack.back().Indent; } else if (Current.isOneOf(tok::r_brace, tok::r_square)) { if (Current.closesBlockTypeList(Style) || (Current.MatchingParen && diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index d809421a41f4..e1960d290f8e 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -2465,6 +2465,14 @@ TEST_F(FormatTest, LayoutNestedBlocks) { " somethingelse();\n" "});", getLLVMStyleWithColumns(40)); + verifyFormat("DEBUG( //\n" + " { f(); }, a);"); + verifyFormat("DEBUG( //\n" + " {\n" + " f(); //\n" + " },\n" + " a);"); + EXPECT_EQ("call(parameter, {\n" " something();\n" " // Comment too\n" @@ -2532,6 +2540,15 @@ TEST_F(FormatTest, IndividualStatementsOfNestedBlocks) { " int j;\n" "} ) ;", 41, 1, getLLVMStyle())); + EXPECT_EQ("DEBUG( {\n" + " int i;\n" + " int j;\n" + "} ) ;", + format("DEBUG( {\n" + " int i;\n" + " int j;\n" + "} ) ;", + 41, 1, getLLVMStyle())); EXPECT_EQ("DEBUG({\n" " int i;\n" " int j;\n"