]> granicus.if.org Git - clang/commitdiff
Objective-C. Update my previous patch to not warn if
authorFariborz Jahanian <fjahanian@apple.com>
Fri, 22 Aug 2014 19:52:49 +0000 (19:52 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Fri, 22 Aug 2014 19:52:49 +0000 (19:52 +0000)
+initialize is called on 'super' in its implementation.
rdar://16628028

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

lib/Sema/SemaExprObjC.cpp
test/SemaObjC/warn-explicit-call-initialize.m

index cbf41b5069a71744731567e50847a8444a6f021f..22c55a7726f0d2b007ebd3212c2f1885fb23631a 100644 (file)
@@ -2232,8 +2232,9 @@ ExprResult Sema::BuildClassMessage(TypeSourceInfo *ReceiverTypeInfo,
                           diag::err_illegal_message_expr_incomplete_type))
     return ExprError();
   
-  // Warn about explicit call of +initialize on its own class.
-  if (Method && Method->getMethodFamily() == OMF_initialize) {
+  // Warn about explicit call of +initialize on its own class. But not on 'super'.
+  if (Method && Method->getMethodFamily() == OMF_initialize &&
+      !SuperLoc.isValid()) {
     const ObjCInterfaceDecl *ID =
       dyn_cast<ObjCInterfaceDecl>(Method->getDeclContext());
     if (ID == Class) {
index 786894cb1d737597d9a0ee328543e9191778515e..1c7baef15e61696bff35b03c83ccc8dd05dc52c8 100644 (file)
@@ -14,6 +14,8 @@
   [I initialize];     // expected-warning {{explicit call to +initialize results in duplicate call to +initialize}} 
   [NSObject initialize]; // expected-warning {{explicit call to +initialize results in duplicate call to +initialize}}
 }
-+ (void)initialize {}
++ (void)initialize {
+  [super initialize];
+}
 @end