[cfe-commits] r147070 - in /cfe/trunk: include/clang/AST/DeclObjC.h lib/Rewrite/RewriteObjC.cpp test/Rewriter/rewrite-implementation.mm test/Rewriter/rewrite-super-message.mm

Fariborz Jahanian fjahanian at apple.com
Wed Dec 21 11:48:07 PST 2011


Author: fjahanian
Date: Wed Dec 21 13:48:07 2011
New Revision: 147070

URL: http://llvm.org/viewvc/llvm-project?rev=147070&view=rev
Log:
objc, objc rewriter. Fixes couple of bugs one
because of recent refactoring and one in the
rewriter.


Modified:
    cfe/trunk/include/clang/AST/DeclObjC.h
    cfe/trunk/lib/Rewrite/RewriteObjC.cpp
    cfe/trunk/test/Rewriter/rewrite-implementation.mm
    cfe/trunk/test/Rewriter/rewrite-super-message.mm

Modified: cfe/trunk/include/clang/AST/DeclObjC.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclObjC.h?rev=147070&r1=147069&r2=147070&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/DeclObjC.h (original)
+++ cfe/trunk/include/clang/AST/DeclObjC.h Wed Dec 21 13:48:07 2011
@@ -898,8 +898,9 @@
   /// isImplicitInterfaceDecl - check that this is an implicitly declared
   /// ObjCInterfaceDecl node. This is for legacy objective-c @implementation
   /// declaration without an @interface declaration.
-  bool isImplicitInterfaceDecl() const { return isImplicit(); }
-  void setImplicitInterfaceDecl(bool val) { setImplicit(val); }
+  bool isImplicitInterfaceDecl() const { 
+    return hasDefinition() ? Data->Definition->isImplicit() : isImplicit(); 
+  }
 
   /// ClassImplementsProtocol - Checks that 'lProto' protocol
   /// has been implemented in IDecl class, its super class or categories (if

Modified: cfe/trunk/lib/Rewrite/RewriteObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Rewrite/RewriteObjC.cpp?rev=147070&r1=147069&r2=147070&view=diff
==============================================================================
--- cfe/trunk/lib/Rewrite/RewriteObjC.cpp (original)
+++ cfe/trunk/lib/Rewrite/RewriteObjC.cpp Wed Dec 21 13:48:07 2011
@@ -2478,7 +2478,7 @@
                                                    false);
 }
 
-// SynthGetMetaClassFunctionDecl - id objc_getClass(const char *name);
+// SynthGetMetaClassFunctionDecl - id objc_getMetaClass(const char *name);
 void RewriteObjC::SynthGetMetaClassFunctionDecl() {
   IdentifierInfo *getClassIdent = &Context->Idents.get("objc_getMetaClass");
   SmallVector<QualType, 16> ArgTys;
@@ -2673,7 +2673,7 @@
     // (Class)objc_getClass("CurrentClass")
     CastExpr *ArgExpr = NoTypeInfoCStyleCastExpr(Context,
                                              Context->getObjCClassType(),
-                                             CK_CPointerToObjCPointerCast, Cls);
+                                             CK_BitCast, Cls);
     ClsExprs.clear();
     ClsExprs.push_back(ArgExpr);
     Cls = SynthesizeCallToFunctionDecl(GetSuperClassFunctionDecl,

Modified: cfe/trunk/test/Rewriter/rewrite-implementation.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Rewriter/rewrite-implementation.mm?rev=147070&r1=147069&r2=147070&view=diff
==============================================================================
--- cfe/trunk/test/Rewriter/rewrite-implementation.mm (original)
+++ cfe/trunk/test/Rewriter/rewrite-implementation.mm Wed Dec 21 13:48:07 2011
@@ -11,3 +11,6 @@
 @implementation b
 @end
 
+ at interface NSArray @end
+ at class NSArray;
+ at implementation NSArray @end

Modified: cfe/trunk/test/Rewriter/rewrite-super-message.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Rewriter/rewrite-super-message.mm?rev=147070&r1=147069&r2=147070&view=diff
==============================================================================
--- cfe/trunk/test/Rewriter/rewrite-super-message.mm (original)
+++ cfe/trunk/test/Rewriter/rewrite-super-message.mm Wed Dec 21 13:48:07 2011
@@ -18,3 +18,21 @@
 @end
 
 // CHECK: call %struct.objc_class* @class_getSuperclass
+
+ at class NSZone;
+
+ at interface NSObject {
+}
+
++ (id)allocWithZone:(NSZone *)zone;
+ at end
+
+
+ at interface NSArray : NSObject
+ at end
+
+ at implementation NSArray
++ (id)allocWithZone:(NSZone *)zone {
+    return [super allocWithZone:zone];
+}
+ at end





More information about the cfe-commits mailing list