OSDN Git Service

New testcase for PR1084
authorChris Lattner <sabre@nondot.org>
Sun, 7 Jan 2007 00:02:20 +0000 (00:02 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 7 Jan 2007 00:02:20 +0000 (00:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32967 91177308-0d34-0410-b5e6-96231b3b80d8

test/C++Frontend/2007-01-06-PtrMethodInit.cpp [new file with mode: 0644]

diff --git a/test/C++Frontend/2007-01-06-PtrMethodInit.cpp b/test/C++Frontend/2007-01-06-PtrMethodInit.cpp
new file mode 100644 (file)
index 0000000..f87c8d8
--- /dev/null
@@ -0,0 +1,75 @@
+// RUN: %llvmgxx %s -emit-llvm -S -o -
+// 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 ()}
+};