Skip to content

Commit acf67e3

Browse files
committedApr 7, 2015
clang-format: Improve nested block formatting.
Before: functionA(functionB({ int i; int j; }), aaaa, bbbb, cccc); After: functionA(functionB({ int i; int j; }), aaaa, bbbb, cccc); llvm-svn: 234304
1 parent dd7adf7 commit acf67e3

File tree

3 files changed

+37
-34
lines changed

3 files changed

+37
-34
lines changed
 

‎clang/lib/Format/ContinuationIndenter.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -849,7 +849,8 @@ void ContinuationIndenter::moveStatePastScopeOpener(LineState &State,
849849
bool NoLineBreak = State.Stack.back().NoLineBreak ||
850850
(Current.is(TT_TemplateOpener) &&
851851
State.Stack.back().ContainsUnwrappedBuilder);
852-
unsigned NestedBlockIndent = State.Stack.back().NestedBlockIndent;
852+
unsigned NestedBlockIndent = std::max(State.Stack.back().StartOfFunctionCall,
853+
State.Stack.back().NestedBlockIndent);
853854
State.Stack.push_back(ParenState(NewIndent, NewIndentLevel,
854855
State.Stack.back().LastSpace,
855856
AvoidBinPacking, NoLineBreak));

‎clang/unittests/Format/FormatTest.cpp

+32-29
Original file line numberDiff line numberDiff line change
@@ -3048,35 +3048,38 @@ TEST_F(FormatTest, FormatsJoinedLinesOnSubsequentRuns) {
30483048
}
30493049

30503050
TEST_F(FormatTest, LayoutBlockInsideParens) {
3051-
EXPECT_EQ("functionCall({ int i; });", format(" functionCall ( {int i;} );"));
3052-
EXPECT_EQ("functionCall({\n"
3053-
" int i;\n"
3054-
" int j;\n"
3055-
"});",
3056-
format(" functionCall ( {int i;int j;} );"));
3057-
EXPECT_EQ("functionCall({\n"
3058-
" int i;\n"
3059-
" int j;\n"
3060-
"}, aaaa, bbbb, cccc);",
3061-
format(" functionCall ( {int i;int j;}, aaaa, bbbb, cccc);"));
3062-
EXPECT_EQ("functionCall(\n"
3063-
" {\n"
3064-
" int i;\n"
3065-
" int j;\n"
3066-
" },\n"
3067-
" aaaa, bbbb, // comment\n"
3068-
" cccc);",
3069-
format(" functionCall ( {int i;int j;}, aaaa, bbbb, // comment\n"
3070-
"cccc);"));
3071-
EXPECT_EQ("functionCall(aaaa, bbbb, { int i; });",
3072-
format(" functionCall (aaaa, bbbb, {int i;});"));
3073-
EXPECT_EQ("functionCall(aaaa, bbbb, {\n"
3074-
" int i;\n"
3075-
" int j;\n"
3076-
"});",
3077-
format(" functionCall (aaaa, bbbb, {int i;int j;});"));
3078-
EXPECT_EQ("functionCall(aaaa, bbbb, { int i; });",
3079-
format(" functionCall (aaaa, bbbb, {int i;});"));
3051+
verifyFormat("functionCall({ int i; });");
3052+
verifyFormat("functionCall({\n"
3053+
" int i;\n"
3054+
" int j;\n"
3055+
"});");
3056+
verifyFormat("functionCall({\n"
3057+
" int i;\n"
3058+
" int j;\n"
3059+
"}, aaaa, bbbb, cccc);");
3060+
verifyFormat("functionA(functionB({\n"
3061+
" int i;\n"
3062+
" int j;\n"
3063+
" }),\n"
3064+
" aaaa, bbbb, cccc);");
3065+
verifyFormat("functionCall(\n"
3066+
" {\n"
3067+
" int i;\n"
3068+
" int j;\n"
3069+
" },\n"
3070+
" aaaa, bbbb, // comment\n"
3071+
" cccc);");
3072+
verifyFormat("functionA(functionB({\n"
3073+
" int i;\n"
3074+
" int j;\n"
3075+
" }),\n"
3076+
" aaaa, bbbb, // comment\n"
3077+
" cccc);");
3078+
verifyFormat("functionCall(aaaa, bbbb, { int i; });");
3079+
verifyFormat("functionCall(aaaa, bbbb, {\n"
3080+
" int i;\n"
3081+
" int j;\n"
3082+
"});");
30803083
verifyFormat(
30813084
"Aaa(\n" // FIXME: There shouldn't be a linebreak here.
30823085
" {\n"

‎clang/unittests/Format/FormatTestJS.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -408,10 +408,9 @@ TEST_F(FormatTestJS, MultipleFunctionLiterals) {
408408
" body();\n"
409409
" });");
410410

411-
// FIXME: This is bad, but it used to be formatted correctly by accident.
412-
verifyFormat("getSomeLongPromise().then(function(value) {\n"
413-
" body();\n"
414-
"}).thenCatch(function(error) { body(); });");
411+
verifyFormat("getSomeLongPromise()\n"
412+
" .then(function(value) { body(); })\n"
413+
" .thenCatch(function(error) { body(); });");
415414
}
416415

417416
TEST_F(FormatTestJS, ReturnStatements) {

0 commit comments

Comments
 (0)
Please sign in to comment.