[PATCH] Fix another place where clang check objc selector name instead of checking the selector family

Eli Friedman eli.friedman at gmail.com
Thu Jul 18 18:03:23 PDT 2013


LGTM.

-Eli

On Wed, Jul 17, 2013 at 4:35 AM, Jean-Daniel Dupas
<devlists at shadowlab.org> 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
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>



More information about the cfe-commits mailing list