From de0d61fbe8bb0ba287eeed183bb98361d4e10c68 Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Thu, 23 May 2013 18:29:16 +0000 Subject: [PATCH] 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 --- lib/Format/UnwrappedLineParser.cpp | 2 +- unittests/Format/FormatTest.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp index 081f5b933e..9ef5d1514d 100644 --- a/lib/Format/UnwrappedLineParser.cpp +++ b/lib/Format/UnwrappedLineParser.cpp @@ -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; diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index e3d5c25002..1215be17c4 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -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) { -- 2.50.1