[LLVMbugs] [Bug 7753] cannot initialize a parameter of type 'id<NSMenuDelegate>' with an lvalue of type 'MenuDelegate *'

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Jul 30 09:09:36 PDT 2010


Fariborz Jahanian <fjahanian at apple.com> changed:

           What    |Removed                     |Added
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED

--- Comment #3 from Fariborz Jahanian <fjahanian at apple.com> 2010-07-30 11:09:35 CDT ---
(In reply to comment #2)
> Created an attachment (id=5288)
 --> (http://llvm.org/bugs/attachment.cgi?id=5288) [details]
> nsMenuX.mii
> OK, I've tried to add --save-temps only to /src/cocoa/ and the entire project.
> I've got the same file both times. Hope this helps.

Thanks for the pre-processed file. clang's complaint is legit and can be shown
in this test case:

@protocol NSMenuDelegate;

@interface GeckoNSMenu
- (void)setDelegate:(id <NSMenuDelegate> )anObject ;

@interface MenuDelegate 

MenuDelegate* mMenuDelegate;

GeckoNSMenu* CreateMenuWithGeckoString()
  GeckoNSMenu* myMenu;
  [myMenu setDelegate:mMenuDelegate];

'mMenuDelegate' 's type is 'MenuDelegate*' which does not implement the
'NSMenuDelegate' protocol.
Note that gcc issues a warning in this case:
% gcc -c test.mm
test.mm: In function ‘GeckoNSMenu* CreateMenuWithGeckoString()’:
test.mm:15: warning: class 'MenuDelegate' does not implement the
'NSMenuDelegate' protocol

To fix it is the obvious:

% diff nsMenuX.mii nsMenuX.fixit.mii
<   MenuDelegate* mMenuDelegate;
>   MenuDelegate<NSMenuDelegate>* mMenuDelegate;

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