LGTM.

-Eli

On Wed, Jul 17, 2013 at 4:35 AM, Jean-Daniel Dupas
<[email protected]> wrote:
> In ARC mode, clang emits a warning if the result of an 'init' method is 
> unused but miss cases where the method does not follows the Cocoa naming 
> convention but is properly declared as an init family method.
>
> http://llvm-reviews.chandlerc.com/D1163
>
> Files:
>   lib/AST/Expr.cpp
>   test/SemaObjC/arc.m
>
> Index: lib/AST/Expr.cpp
> ===================================================================
> --- lib/AST/Expr.cpp
> +++ lib/AST/Expr.cpp
> @@ -2080,9 +2080,7 @@
>      if (Ctx.getLangOpts().ObjCAutoRefCount &&
>          ME->isInstanceMessage() &&
>          !ME->getType()->isVoidType() &&
> -        ME->getSelector().getIdentifierInfoForSlot(0) &&
> -        ME->getSelector().getIdentifierInfoForSlot(0)
> -                                               
> ->getName().startswith("init")) {
> +        ME->getMethodFamily() == OMF_init) {
>        WarnE = this;
>        Loc = getExprLoc();
>        R1 = ME->getSourceRange();
> Index: test/SemaObjC/arc.m
> ===================================================================
> --- test/SemaObjC/arc.m
> +++ test/SemaObjC/arc.m
> @@ -84,14 +84,17 @@
>  // rdar://8861761
>
>  @interface B
> --(id)alloc;
> ++ (id)alloc;
>  - (id)initWithInt: (int) i;
> +- (id)myInit __attribute__((objc_method_family(init)));
>  @end
>
>  void rdar8861761() {
>    B *o1 = [[B alloc] initWithInt:0];
>    B *o2 = [B alloc];
>    [o2 initWithInt:0]; // expected-warning {{expression result unused}}
> +  B *o3 = [[B alloc] myInit];
> +  [[B alloc] myInit]; // expected-warning {{expression result unused}}
>  }
>
>  // rdar://8925835
>
> _______________________________________________
> 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

Reply via email to