]> granicus.if.org Git - clang/commitdiff
clang-format: With ColumnLimit=0, keep short array literals on a line.
authorDaniel Jasper <djasper@google.com>
Mon, 14 Apr 2014 12:05:05 +0000 (12:05 +0000)
committerDaniel Jasper <djasper@google.com>
Mon, 14 Apr 2014 12:05:05 +0000 (12:05 +0000)
Before:
    NSArray* a = [[NSArray alloc] initWithArray:@[
                                                   @"a"
                                                ]
                                      copyItems:YES];

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

This fixed llvm.org/PR19080.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@206161 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/ContinuationIndenter.cpp
unittests/Format/FormatTest.cpp

index 53b5867965145d839b05c5352c6142df31bfc039..43997f99576ab3fb8abb24731d5214db6c1e355a 100644 (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 &&
index 0dc06594f1504041bea55ce1d03b6970f166c7b2..7bae21b89e6c3660082aea4419721a20534c2509 100644 (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) {