[cfe-commits] r161500 - in /cfe/trunk: lib/Sema/SemaExpr.cpp lib/Sema/SemaExprMember.cpp test/SemaObjC/warn-direct-ivar-access.m

Douglas Gregor dgregor at apple.com
Wed Aug 8 09:42:56 PDT 2012


On Aug 8, 2012, at 9:41 AM, Fariborz Jahanian <fjahanian at apple.com> wrote:

> Author: fjahanian
> Date: Wed Aug  8 11:41:04 2012
> New Revision: 161500
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=161500&view=rev
> Log:
> objc: Include all types when issuing warning under
> -Wdirect-ivar-access.

Thanks!

	- Doug

> Modified:
>    cfe/trunk/lib/Sema/SemaExpr.cpp
>    cfe/trunk/lib/Sema/SemaExprMember.cpp
>    cfe/trunk/test/SemaObjC/warn-direct-ivar-access.m
> 
> Modified: cfe/trunk/lib/Sema/SemaExpr.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=161500&r1=161499&r2=161500&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaExpr.cpp Wed Aug  8 11:41:04 2012
> @@ -1961,11 +1961,10 @@
>         return ExprError();
> 
>       MarkAnyDeclReferenced(Loc, IV);
> -      if (IV->getType()->isObjCObjectPointerType()) {
> -        ObjCMethodFamily MF = CurMethod->getMethodFamily();
> -        if (MF != OMF_init && MF != OMF_dealloc && MF != OMF_finalize)
> -          Diag(Loc, diag::warn_direct_ivar_access) << IV->getDeclName();
> -      }
> +      
> +      ObjCMethodFamily MF = CurMethod->getMethodFamily();
> +      if (MF != OMF_init && MF != OMF_dealloc && MF != OMF_finalize)
> +        Diag(Loc, diag::warn_direct_ivar_access) << IV->getDeclName();
>       return Owned(new (Context)
>                    ObjCIvarRefExpr(IV, IV->getType(), Loc,
>                                    SelfExpr.take(), true, true));
> 
> Modified: cfe/trunk/lib/Sema/SemaExprMember.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprMember.cpp?rev=161500&r1=161499&r2=161500&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaExprMember.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaExprMember.cpp Wed Aug  8 11:41:04 2012
> @@ -1263,7 +1263,7 @@
>           warn = false;
>         }
>     }
> -    if (warn && IV->getType()->isObjCObjectPointerType()) {
> +    if (warn) {
>       if (ObjCMethodDecl *MD = getCurMethodDecl()) {
>         ObjCMethodFamily MF = MD->getMethodFamily();
>         warn = (MF != OMF_init && MF != OMF_dealloc && 
> 
> Modified: cfe/trunk/test/SemaObjC/warn-direct-ivar-access.m
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/warn-direct-ivar-access.m?rev=161500&r1=161499&r2=161500&view=diff
> ==============================================================================
> --- cfe/trunk/test/SemaObjC/warn-direct-ivar-access.m (original)
> +++ cfe/trunk/test/SemaObjC/warn-direct-ivar-access.m Wed Aug  8 11:41:04 2012
> @@ -5,15 +5,18 @@
> @public
>     id _myMaster;
>     id _isTickledPink;
> +    int _myIntProp;
> }
> @property(retain) id myMaster;
> @property(assign) id isTickledPink; // expected-note {{property declared here}}
> + at property int myIntProp;
> @end
> 
> @implementation MyObject
> 
> @synthesize myMaster = _myMaster;
> @synthesize isTickledPink = _isTickledPink; // expected-error {{existing ivar '_isTickledPink' for property 'isTickledPink'}}
> + at synthesize myIntProp = _myIntProp;
> 
> - (void) doSomething {
>     _myMaster = _isTickledPink; // expected-warning {{instance variable '_myMaster' is being directly accessed}} \
> @@ -33,6 +36,8 @@
>         p.isTickledPink = p.myMaster;	// ok
> 	p->_isTickledPink = (*p)._myMaster; // expected-warning {{instance variable '_isTickledPink' is being directly accessed}} \
>         // expected-warning {{instance variable '_myMaster' is being directly accessed}}
> +        if (p->_myIntProp) // expected-warning {{instance variable '_myIntProp' is being directly accessed}}
> +          p->_myIntProp = 0; // expected-warning {{instance variable '_myIntProp' is being directly accessed}}
> 	return p->_isTickledPink; // expected-warning {{instance variable '_isTickledPink' is being directly accessed}}
> }
> 
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits




More information about the cfe-commits mailing list