More tests and a fix for braced init lists.

Before: f(new vector<int> { 1, 2, 3 });
After:  f(new vector<int>{ 1, 2, 3 });
llvm-svn: 182614
This commit is contained in:
Daniel Jasper 2013-05-23 21:35:49 +00:00
parent 96a6f90d84
commit f632f69284
2 changed files with 6 additions and 2 deletions

View File

@ -1095,8 +1095,8 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line,
if (Right.Type == TT_UnaryOperator) if (Right.Type == TT_UnaryOperator)
return !Left.isOneOf(tok::l_paren, tok::l_square, tok::at) && return !Left.isOneOf(tok::l_paren, tok::l_square, tok::at) &&
(Left.isNot(tok::colon) || Left.Type != TT_ObjCMethodExpr); (Left.isNot(tok::colon) || Left.Type != TT_ObjCMethodExpr);
if (Left.is(tok::identifier) && Right.is(tok::l_brace) && if (Left.isOneOf(tok::identifier, tok::greater, tok::r_square) &&
Right.getNextNoneComment()) Right.is(tok::l_brace) && Right.getNextNoneComment())
return false; return false;
if (Right.is(tok::ellipsis)) if (Right.is(tok::ellipsis))
return false; return false;

View File

@ -3159,6 +3159,8 @@ TEST_F(FormatTest, LayoutCxx11ConstructorBraceInitializers) {
verifyFormat("auto v = Foo{ 1 };"); verifyFormat("auto v = Foo{ 1 };");
verifyFormat("f({ 1, 2 }, { { 2, 3 }, { 4, 5 } }, c, { d });"); verifyFormat("f({ 1, 2 }, { { 2, 3 }, { 4, 5 } }, c, { d });");
verifyFormat("Class::Class : member{ 1, 2, 3 } {}"); verifyFormat("Class::Class : member{ 1, 2, 3 } {}");
verifyFormat("new vector<int>{ 1, 2, 3 };");
verifyFormat("new int[3]{ 1, 2, 3 };");
verifyFormat("return { arg1, arg2 };"); verifyFormat("return { arg1, arg2 };");
verifyFormat("new T{ arg1, arg2 };"); verifyFormat("new T{ arg1, arg2 };");
verifyFormat("class Class {\n" verifyFormat("class Class {\n"
@ -3173,6 +3175,8 @@ TEST_F(FormatTest, LayoutCxx11ConstructorBraceInitializers) {
verifyFormat("auto v = Foo{-1};", NoSpaces); verifyFormat("auto v = Foo{-1};", NoSpaces);
verifyFormat("f({1, 2}, {{2, 3}, {4, 5}}, c, {d});", NoSpaces); verifyFormat("f({1, 2}, {{2, 3}, {4, 5}}, c, {d});", NoSpaces);
verifyFormat("Class::Class : member{1, 2, 3} {}", NoSpaces); verifyFormat("Class::Class : member{1, 2, 3} {}", NoSpaces);
verifyFormat("new vector<int>{1, 2, 3};", NoSpaces);
verifyFormat("new int[3]{1, 2, 3};", NoSpaces);
verifyFormat("return {arg1, arg2};", NoSpaces); verifyFormat("return {arg1, arg2};", NoSpaces);
verifyFormat("new T{arg1, arg2};", NoSpaces); verifyFormat("new T{arg1, arg2};", NoSpaces);
verifyFormat("class Class {\n" verifyFormat("class Class {\n"