Formatter: Add a test for multi-line ObjC dict literals.
authorNico Weber <nicolasweber@gmx.de>
Sun, 10 Feb 2013 20:48:24 +0000 (20:48 +0000)
committerNico Weber <nicolasweber@gmx.de>
Sun, 10 Feb 2013 20:48:24 +0000 (20:48 +0000)
As it turns out, this already works reasonably well.

This example from http://clang.llvm.org/docs/ObjectiveCLiterals.html
NSDictionary *dictionary = @{
    @"name" : NSUserName(),
    @"date" : [NSDate date],
    @"processInfo" : [NSProcessInfo processInfo]
};

is formatted like
NSDictionary *dictionary = @{ @"name" : NSUserName(), @"date" : [NSDate date],
                              @"processInfo" : [NSProcessInfo processInfo] };

There's already a FIXME in NestedStaticInitializers about supporting one
initializer per line, which is really all that's missing here too.

llvm-svn: 174842

clang/unittests/Format/FormatTest.cpp

index 3760a3b..12a3715 100644 (file)
@@ -2563,6 +2563,9 @@ TEST_F(FormatTest, ObjCLiterals) {
       "NSDictionary *settings = @{ AVEncoderKey : @(AVAudioQualityMax) };");
   
   // FIXME: Nested and multi-line array and dictionary literals need more work.
+  verifyFormat(
+      "NSDictionary *d = @{ @\"nam\" : NSUserNam(), @\"dte\" : [NSDate date],\n"
+      "                     @\"processInfo\" : [NSProcessInfo processInfo] };");
 }
 
 TEST_F(FormatTest, ReformatRegionAdjustsIndent) {