]> granicus.if.org Git - clang/commitdiff
reverse patch in r139818 to focus on 'self'
authorFariborz Jahanian <fjahanian@apple.com>
Thu, 15 Sep 2011 20:40:18 +0000 (20:40 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Thu, 15 Sep 2011 20:40:18 +0000 (20:40 +0000)
instead of 'Class'.

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

lib/Sema/SemaExpr.cpp
test/SemaObjC/class-type-conversion.m [deleted file]

index 35b38b101a3f9f7263d7e6ad31452a783a0cb4ee..16b55f1aee4d40c66f5c2ffb7570e944e9690c99 100644 (file)
@@ -5227,35 +5227,6 @@ checkBlockPointerTypesForAssignment(Sema &S, QualType LHSType,
   return ConvTy;
 }
 
-static Sema::AssignConvertType
-checkObjCPointerTypesForAssignment(Sema &S, QualType LHSType,
-                                   QualType RHSType);
-/// checkClassTypes - Routine checks for conversion of "Class" type.
-// Conversion from type Class to any root class type in a class method
-// is allowed.
-static Sema::AssignConvertType
-checkClassTypes(Sema &S, QualType LHSType) {
-  // Conversion from type Class to any root class type is allowed.
-  DeclContext *DC = S.CurContext;
-  while (isa<BlockDecl>(DC))
-    DC = DC->getParent();
-  ObjCMethodDecl *MD = dyn_cast_or_null<ObjCMethodDecl>(DC);
-  if (MD && MD->isClassMethod()) {
-    ObjCInterfaceDecl *Root = 0;
-      if (ObjCInterfaceDecl * IDecl = MD->getClassInterface())
-        do
-          Root = IDecl;
-        while ((IDecl = IDecl->getSuperClass()));
-      if (Root){
-        QualType RHSType = 
-          S.Context.getObjCObjectPointerType(
-                                 S.Context.getObjCInterfaceType(Root));
-        return checkObjCPointerTypesForAssignment(S, LHSType, RHSType);
-      }
-  }
-  return Sema::IncompatiblePointer;
-}
-
 /// checkObjCPointerTypesForAssignment - Compares two objective-c pointer types
 /// for assignment compatibility.
 static Sema::AssignConvertType
@@ -5274,7 +5245,7 @@ checkObjCPointerTypesForAssignment(Sema &S, QualType LHSType,
   if (RHSType->isObjCBuiltinType()) {
     if (RHSType->isObjCClassType() && !LHSType->isObjCBuiltinType() &&
         !LHSType->isObjCQualifiedClassType())
-      return checkClassTypes(S, LHSType);
+      return Sema::IncompatiblePointer;
     return Sema::Compatible;
   }
   QualType lhptee = LHSType->getAs<ObjCObjectPointerType>()->getPointeeType();
diff --git a/test/SemaObjC/class-type-conversion.m b/test/SemaObjC/class-type-conversion.m
deleted file mode 100644 (file)
index a009ebe..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -verify %s
-// rdar://10109725
-
-@interface NSObject {
-    Class isa;
-}
-- (id)addObserver:(NSObject *)observer; // expected-note 2 {{passing argument to parameter 'observer' here}}
-@end
-
-@interface MyClass : NSObject {
-}
-@end
-
-@implementation NSObject
-+ (void)initialize
-{
-        NSObject *obj = 0;
-        [obj addObserver:self];
-        [obj addObserver:(Class)0];
-}
-
-- init
-{
-        NSObject *obj = 0;
-        [obj addObserver:self];
-        return [obj addObserver:(Class)0]; // expected-warning {{incompatible pointer types sending 'Class' to parameter of type 'NSObject *'}}
-}
-- (id)addObserver:(NSObject *)observer { return 0; }
-@end
-
-@implementation MyClass
-
-+ (void)initialize
-{
-        NSObject *obj = 0;
-        [obj addObserver:self];
-        [obj addObserver:(Class)0];
-}
-
-- init
-{
-        NSObject *obj = 0;
-        [obj addObserver:self];
-        return [obj addObserver:(Class)0]; // expected-warning {{incompatible pointer types sending 'Class' to parameter of type 'NSObject *'}}
-}
-@end