Increase test coverage for braced init lists.
Also fix a minor bug for constructor initializers with braced init lists.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@182601 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp
index 081f5b9..9ef5d15 100644
--- a/lib/Format/UnwrappedLineParser.cpp
+++ b/lib/Format/UnwrappedLineParser.cpp
@@ -257,7 +257,7 @@
// brace blocks inside it braced init list. That works good enough
// for now, but we will need to fix it to correctly handle lambdas.
if (NextTok.Tok.is(tok::comma) || NextTok.Tok.is(tok::semi) ||
- NextTok.Tok.is(tok::r_paren))
+ NextTok.Tok.is(tok::r_paren) || NextTok.Tok.is(tok::l_brace))
LBraces[LBraceStack.back()] = BS_BracedInit;
else
LBraces[LBraceStack.back()] = BS_Block;
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index e3d5c25..1215be1 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -3131,6 +3131,12 @@
verifyFormat("f({ 1, 2 });");
verifyFormat("auto v = Foo{ 1 };");
verifyFormat("f({ 1, 2 }, { { 2, 3 }, { 4, 5 } }, c, { d });");
+ verifyFormat("Class::Class : member{ 1, 2, 3 } {}");
+ verifyFormat("return { arg1, arg2 };");
+ verifyFormat("new T{ arg1, arg2 };");
+ verifyFormat("class Class {\n"
+ " T member = { arg1, arg2 };\n"
+ "};");
FormatStyle NoSpaces = getLLVMStyle();
NoSpaces.SpacesInBracedLists = false;
@@ -3139,6 +3145,13 @@
verifyFormat("f({1, 2});", NoSpaces);
verifyFormat("auto v = Foo{-1};", NoSpaces);
verifyFormat("f({1, 2}, {{2, 3}, {4, 5}}, c, {d});", NoSpaces);
+ verifyFormat("Class::Class : member{1, 2, 3} {}", NoSpaces);
+ verifyFormat("return {arg1, arg2};", NoSpaces);
+ verifyFormat("new T{arg1, arg2};", NoSpaces);
+ verifyFormat("class Class {\n"
+ " T member = {arg1, arg2};\n"
+ "};",
+ NoSpaces);
}
TEST_F(FormatTest, LayoutTokensFollowingBlockInParentheses) {