]> granicus.if.org Git - clang/commitdiff
Fixes a rewrting bug of a property-dot syntax expression inside
authorFariborz Jahanian <fjahanian@apple.com>
Fri, 8 Apr 2011 23:48:29 +0000 (23:48 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Fri, 8 Apr 2011 23:48:29 +0000 (23:48 +0000)
a block. First part of // rdar://9254348

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

lib/Rewrite/RewriteObjC.cpp
test/Rewriter/rewrite-block-literal-1.mm [new file with mode: 0644]

index 13cd671f12361d6e2aa7a3bd9280c4e7615c21a0..298ed9a90620f35a278da59e7a9eb51f7d3d3250 100644 (file)
@@ -5558,6 +5558,7 @@ Stmt *RewriteObjC::RewriteFunctionBodyOrGlobalInitializer(Stmt *S) {
     // Rewrite the block body in place.
     Stmt *SaveCurrentBody = CurrentBody;
     CurrentBody = BE->getBody();
+    CollectPropertySetters(CurrentBody);
     PropParentMap = 0;
     RewriteFunctionBodyOrGlobalInitializer(BE->getBody());
     CurrentBody = SaveCurrentBody;
diff --git a/test/Rewriter/rewrite-block-literal-1.mm b/test/Rewriter/rewrite-block-literal-1.mm
new file mode 100644 (file)
index 0000000..681d2ff
--- /dev/null
@@ -0,0 +1,27 @@
+// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp
+// RUN: %clang_cc1 -fsyntax-only -Wno-address-of-temporary -Did="void *" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
+// radar 9254348
+
+void *sel_registerName(const char *);
+typedef void (^BLOCK_TYPE)(void);
+
+@interface CoreDAVTaskGroup 
+{
+  int IVAR;
+}
+@property int IVAR;
+- (void) setCompletionBlock : (BLOCK_TYPE) arg;
+@end
+
+@implementation CoreDAVTaskGroup
+- (void)_finishInitialSync {
+                    CoreDAVTaskGroup *folderPost;
+                    [folderPost setCompletionBlock : (^{
+                       self.IVAR = 0;
+                    })];
+}
+@dynamic IVAR;
+- (void) setCompletionBlock : (BLOCK_TYPE) arg {}
+@end
+
+