]> granicus.if.org Git - clang/commitdiff
Increase test coverage for braced init lists.
authorDaniel Jasper <djasper@google.com>
Thu, 23 May 2013 18:29:16 +0000 (18:29 +0000)
committerDaniel Jasper <djasper@google.com>
Thu, 23 May 2013 18:29:16 +0000 (18:29 +0000)
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

lib/Format/UnwrappedLineParser.cpp
unittests/Format/FormatTest.cpp

index 081f5b933e0f77ac53ea363f4d17939ba38e4409..9ef5d1514d9449e5cdd427d835ce9fbd967e0dd4 100644 (file)
@@ -257,7 +257,7 @@ void UnwrappedLineParser::calculateBraceTypes() {
           // 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;
index e3d5c25002e06067e13c24e01a78d7fd8ecaeaac..1215be17c4589f8546f544c59b03d5df8c4b26df 100644 (file)
@@ -3131,6 +3131,12 @@ TEST_F(FormatTest, LayoutCxx11ConstructorBraceInitializers) {
     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 @@ TEST_F(FormatTest, LayoutCxx11ConstructorBraceInitializers) {
     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) {