]> granicus.if.org Git - clang/commitdiff
Fix <rdar://problem/6435382> clang ObjC rewriter: @property/@synthesize and blocks...
authorSteve Naroff <snaroff@apple.com>
Thu, 11 Dec 2008 19:29:16 +0000 (19:29 +0000)
committerSteve Naroff <snaroff@apple.com>
Thu, 11 Dec 2008 19:29:16 +0000 (19:29 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60887 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/RewriteObjC.cpp

index 2487d23759b036e00733ec329e0d67c6d8ee19b7..e071cb904ed979689b6dc28069d63606b6030e25 100644 (file)
@@ -720,7 +720,7 @@ void RewriteObjC::RewritePropertyImplDecl(ObjCPropertyImplDecl *PID,
   // attributes (copy, retain, nonatomic). 
   // See objc-act.c:objc_synthesize_new_setter() for details.
   Setr += getIvarAccessString(ClassDecl, OID) + " = ";
-  Setr += OID->getNameAsCString();
+  Setr += PD->getNameAsCString();
   Setr += "; }";
   InsertText(onePastSemiLoc, Setr.c_str(), Setr.size());
 
@@ -861,16 +861,19 @@ void RewriteObjC::RewriteObjCMethodDecl(ObjCMethodDecl *OMD,
   ResultStr += "\nstatic ";
   if (OMD->getResultType()->isObjCQualifiedIdType())
     ResultStr += "id";
-  else if (OMD->getResultType()->isFunctionPointerType()) {
+  else if (OMD->getResultType()->isFunctionPointerType() ||
+           OMD->getResultType()->isBlockPointerType()) {
     // needs special handling, since pointer-to-functions have special
     // syntax (where a decaration models use).
     QualType retType = OMD->getResultType();
-    if (const PointerType* PT = retType->getAsPointerType()) {
-      QualType PointeeTy = PT->getPointeeType();
-      if ((FPRetType = PointeeTy->getAsFunctionType())) {
-        ResultStr += FPRetType->getResultType().getAsString();
-        ResultStr += "(*";
-      }
+    QualType PointeeTy;
+    if (const PointerType* PT = retType->getAsPointerType())
+      PointeeTy = PT->getPointeeType();
+    else if (const BlockPointerType *BPT = retType->getAsBlockPointerType())
+      PointeeTy = BPT->getPointeeType();
+    if ((FPRetType = PointeeTy->getAsFunctionType())) {
+      ResultStr += FPRetType->getResultType().getAsString();
+      ResultStr += "(*";
     }
   } else
     ResultStr += OMD->getResultType().getAsString();