clang-format: With ColumnLimit=0, keep short array literals on a line.

Before:
    NSArray* a = [[NSArray alloc] initWithArray:@[
                                                   @"a"
                                                ]
                                      copyItems:YES];

After:
    NSArray* a = [[NSArray alloc] initWithArray:@[ @"a" ]
                                      copyItems:YES];

This fixed llvm.org/PR19080.

llvm-svn: 206161
This commit is contained in:
Daniel Jasper 2014-04-14 12:05:05 +00:00
parent 90527cb324
commit af4fee2636
2 changed files with 15 additions and 0 deletions

View File

@ -142,6 +142,7 @@ bool ContinuationIndenter::mustBreak(const LineState &State) {
return true;
if (((Previous.Type == TT_DictLiteral && Previous.is(tok::l_brace)) ||
Previous.Type == TT_ArrayInitializerLSquare) &&
(Style.ColumnLimit > 0 || Previous.ParameterCount > 1) &&
getLengthToMatchingParen(Previous) + State.Column > getColumnLimit(State))
return true;
if (Current.Type == TT_CtorInitializerColon &&

View File

@ -8148,6 +8148,20 @@ TEST_F(FormatTest, FormatsWithWebKitStyle) {
format("#define aNumber \\\n"
" 10",
Style));
// Keep empty and one-element array literals on a single line.
verifyFormat("NSArray* a = [[NSArray alloc] initWithArray:@[]\n"
" copyItems:YES];",
Style);
verifyFormat("NSArray* a = [[NSArray alloc] initWithArray:@[ @\"a\" ]\n"
" copyItems:YES];",
Style);
verifyFormat("NSArray* a = [[NSArray alloc] initWithArray:@[\n"
" @\"a\",\n"
" @\"a\"\n"
" ]\n"
" copyItems:YES];",
Style);
}
TEST_F(FormatTest, FormatsLambdas) {