diff options
author | Daniel Jasper <djasper@google.com> | 2013-02-06 10:05:46 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2013-02-06 10:05:46 +0000 |
commit | 4e778091b0ff42895644ca8bef30f1a91ba6b32b (patch) | |
tree | 9f0ea355ad6190c264a18bf0b121a985fb009c25 /unittests/Format/FormatTest.cpp | |
parent | e8a97985f72b4e11435ff2107c0f11e925fb6d96 (diff) |
Handle nested ObjC calls.
Properly handle annotation contexts while calculating extra information
for each token. This enable nested ObjC calls and thus solves (most of)
llvm.org/PR15164. E.g., we can now format:
[contentsContainer replaceSubview:[subviews objectAtIndex:0]
with:contentsNativeView];
Also fix a problem with the formatting of types in casts as this was
trivial now.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174498 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/Format/FormatTest.cpp')
-rw-r--r-- | unittests/Format/FormatTest.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index fbe5f30f70..56f39e88a2 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -1546,6 +1546,8 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) { verifyIndependentOfContext("A<int *> a;"); verifyIndependentOfContext("A<int **> a;"); verifyIndependentOfContext("A<int *, int *> a;"); + verifyIndependentOfContext( + "const char *const p = reinterpret_cast<const char *const>(q);"); verifyIndependentOfContext("A<int **, int **> a;"); verifyFormat( @@ -1564,6 +1566,8 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) { verifyGoogleFormat("*++*x;"); verifyGoogleFormat("Type* t = const_cast<T*>(&*x);"); verifyGoogleFormat("Type* t = x++ * y;"); + verifyGoogleFormat( + "const char* const p = reinterpret_cast<const char* const>(q);"); verifyIndependentOfContext("a = *(x + y);"); verifyIndependentOfContext("a = &(x + y);"); @@ -2305,8 +2309,9 @@ TEST_F(FormatTest, FormatObjCMethodExpr) { " backing:NSBackingStoreBuffered\n" " defer:YES]))"); - verifyFormat("[foo checkThatBreakingAfterColonWorksOk:\n" - " [bar ifItDoes:reduceOverallLineLengthLikeInThisCase]];"); + verifyFormat( + "[foo checkThatBreakingAfterColonWorksOk:\n" + " [bar ifItDoes:reduceOverallLineLengthLikeInThisCase]];"); verifyFormat("[myObj short:arg1 // Force line break\n" " longKeyword:arg2\n" @@ -2321,6 +2326,23 @@ TEST_F(FormatTest, FormatObjCMethodExpr) { " backing:NSBackingStoreBuffered\n" " defer:NO]);\n" "}"); + verifyFormat("[contentsContainer replaceSubview:[subviews objectAtIndex:0]\n" + " with:contentsNativeView];"); + + verifyFormat( + "[pboard addTypes:[NSArray arrayWithObject:kBookmarkButtonDragType]\n" + " owner:nillllll];"); + + // FIXME: No line break necessary for the first nested call. + verifyFormat( + "[pboard setData:[NSData dataWithBytes:&button\n" + " length:sizeof(button)]\n" + " forType:kBookmarkButtonDragType];"); + + verifyFormat("[defaultCenter addObserver:self\n" + " selector:@selector(willEnterFullscreen)\n" + " name:kWillEnterFullscreenNotification\n" + " object:nil];"); } TEST_F(FormatTest, ObjCAt) { |