On Aug 24, 2014, at 12:36 AM, Jean-Daniel Dupas <[email protected]> wrote:
> Are you sure excluding that case is right ? > > AFAIK, call [super initialize] is suspicious, as the runtime already call it > for each class in the hierarchy. [super initialize] is called from inside +initialize implementations. So, we don’t want to warn. - Fariborz > > Le 22 août 2014 à 21:52, Fariborz Jahanian <[email protected]> a écrit : > >> >> Author: fjahanian >> Date: Fri Aug 22 14:52:49 2014 >> New Revision: 216282 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=216282&view=rev >> Log: >> Objective-C. Update my previous patch to not warn if >> +initialize is called on 'super' in its implementation. >> rdar://16628028 >> >> Modified: >> cfe/trunk/lib/Sema/SemaExprObjC.cpp >> cfe/trunk/test/SemaObjC/warn-explicit-call-initialize.m >> >> Modified: cfe/trunk/lib/Sema/SemaExprObjC.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprObjC.cpp?rev=216282&r1=216281&r2=216282&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Sema/SemaExprObjC.cpp (original) >> +++ cfe/trunk/lib/Sema/SemaExprObjC.cpp Fri Aug 22 14:52:49 2014 >> @@ -2232,8 +2232,9 @@ ExprResult Sema::BuildClassMessage(TypeS >> 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) { >> >> Modified: cfe/trunk/test/SemaObjC/warn-explicit-call-initialize.m >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/warn-explicit-call-initialize.m?rev=216282&r1=216281&r2=216282&view=diff >> ============================================================================== >> --- cfe/trunk/test/SemaObjC/warn-explicit-call-initialize.m (original) >> +++ cfe/trunk/test/SemaObjC/warn-explicit-call-initialize.m Fri Aug 22 >> 14:52:49 2014 >> @@ -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 >> >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
