[LLVMbugs] [Bug 10164] New: Issue with objc_method_family(init) in class extension.

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Jun 21 00:52:59 PDT 2011


http://llvm.org/bugs/show_bug.cgi?id=10164

           Summary: Issue with objc_method_family(init) in class
                    extension.
           Product: clang
           Version: trunk
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: Frontend
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: devlists at shadowlab.org
                CC: llvmbugs at cs.uiuc.edu


When using the objc_method_family(init) attribute in class extension, clang
does not properly infer the return type and emit a diagnostic to tell it
mismatch (whatever you set as return type).

---------- method_family_init.m
@interface Foo {}
@end

@interface Foo() 
- (id)myinit __attribute__((objc_method_family(init)));
@end

@implementation Foo
- (id)myinit { return self; }
@end

------------
% clang -c method_family_init.m
method_family_init.m:9:1: warning: method is expected to return an instance of
its class type 'Foo', but is declared to return 'id'
- (id)myinit { return self; }
^  ~~
method_family_init.m:5:1: note: overridden method is part of the 'init' method
family
- (id)myinit __attribute__((objc_method_family(init)));
^
1 warning generated.


Note that setting the return type to (Foo *) will not solve the issue as clang
expect 'Foo' and not 'Foo *', which is meaningless in Obj-C.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list