summaryrefslogtreecommitdiff
path: root/test/C++Frontend
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-01-07 00:02:20 +0000
committerChris Lattner <sabre@nondot.org>2007-01-07 00:02:20 +0000
commit774abfefeb4969b6bdb477d2fe0cba7ae094966f (patch)
tree9a1d4b4c6b3df7453154c9b6f848c4cb5e95c169 /test/C++Frontend
parentddc6f353c0e6746553e7042170e42d715b76a294 (diff)
downloadllvm-774abfefeb4969b6bdb477d2fe0cba7ae094966f.tar.gz
llvm-774abfefeb4969b6bdb477d2fe0cba7ae094966f.tar.bz2
llvm-774abfefeb4969b6bdb477d2fe0cba7ae094966f.tar.xz
New testcase for PR1084
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32967 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/C++Frontend')
-rw-r--r--test/C++Frontend/2007-01-06-PtrMethodInit.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/test/C++Frontend/2007-01-06-PtrMethodInit.cpp b/test/C++Frontend/2007-01-06-PtrMethodInit.cpp
new file mode 100644
index 0000000000..f87c8d888f
--- /dev/null
+++ b/test/C++Frontend/2007-01-06-PtrMethodInit.cpp
@@ -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 ()}
+};