| // RUN: %clang_cc1 -emit-llvm %s -o - -triple i386-apple-macosx10.7.2 |
| // PR1084 |
| |
| extern "C" |
| { |
| typedef unsigned char PRUint8; |
| typedef unsigned int PRUint32; |
| } |
| typedef PRUint32 nsresult; |
| struct nsID |
| { |
| }; |
| typedef nsID nsIID; |
| class nsISupports |
| { |
| }; |
| extern "C++" |
| { |
| template < class T > struct nsCOMTypeInfo |
| { |
| static const nsIID & GetIID () |
| { |
| } |
| }; |
| } |
| |
| class nsIDOMEvent:public nsISupports |
| { |
| }; |
| class nsIDOMEventListener:public nsISupports |
| { |
| public:static const nsIID & GetIID () |
| { |
| } |
| virtual nsresult |
| __attribute__ ((regparm (0), cdecl)) HandleEvent (nsIDOMEvent * event) = |
| 0; |
| }; |
| class nsIDOMMouseListener:public nsIDOMEventListener |
| { |
| public:static const nsIID & GetIID () |
| { |
| static const nsIID iid = { |
| }; |
| } |
| virtual nsresult |
| __attribute__ ((regparm (0), |
| cdecl)) MouseDown (nsIDOMEvent * aMouseEvent) = 0; |
| }; |
| typedef |
| typeof (&nsIDOMEventListener::HandleEvent) |
| GenericHandler; |
| struct EventDispatchData |
| { |
| PRUint32 message; |
| GenericHandler method; |
| PRUint8 bits; |
| }; |
| struct EventTypeData |
| { |
| const EventDispatchData *events; |
| int numEvents; |
| const nsIID *iid; |
| }; |
| static const EventDispatchData sMouseEvents[] = { |
| { |
| (300 + 2), |
| reinterpret_cast < GenericHandler > (&nsIDOMMouseListener::MouseDown), |
| 0x01} |
| }; |
| static const EventTypeData sEventTypes[] = { |
| { |
| sMouseEvents, (sizeof (sMouseEvents) / sizeof (sMouseEvents[0])), |
| &nsCOMTypeInfo < nsIDOMMouseListener >::GetIID ()} |
| }; |