fix some testcases failing on Windows
authordalcinl <none@none>
Sat, 10 Apr 2010 05:51:42 +0000 (02:51 -0300)
committerdalcinl <none@none>
Sat, 10 Apr 2010 05:51:42 +0000 (02:51 -0300)
Cython/Compiler/Optimize.py
tests/compile/callingconvention.h [new file with mode: 0644]
tests/compile/callingconvention.pyx
tests/compile/declarations.h [new file with mode: 0644]
tests/compile/declarations.pyx
tests/compile/excvalcheck.h [new file with mode: 0644]
tests/compile/excvalcheck.pyx
tests/compile/nogil.h

index 1917c9cf3594713f6d3e6e716b18d5ed97a23d11..96ba5dfd48d6865bf8a2ac692a8999f0316b2d01 100644 (file)
@@ -2116,6 +2116,7 @@ impl = ""
 pop_utility_code = UtilityCode(
 proto = """
 static CYTHON_INLINE PyObject* __Pyx_PyObject_Pop(PyObject* L) {
+    PyObject *r, *m;
 #if PY_VERSION_HEX >= 0x02040000
     if (likely(PyList_CheckExact(L))
             /* Check that both the size is positive and no reallocation shrinking needs to be done. */
@@ -2124,7 +2125,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Pop(PyObject* L) {
         return PyList_GET_ITEM(L, PyList_GET_SIZE(L));
     }
 #endif
-    PyObject *r, *m;
     m = __Pyx_GetAttrString(L, "pop");
     if (!m) return NULL;
     r = PyObject_CallObject(m, NULL);
diff --git a/tests/compile/callingconvention.h b/tests/compile/callingconvention.h
new file mode 100644 (file)
index 0000000..43b93ba
--- /dev/null
@@ -0,0 +1,33 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern DL_EXPORT(int) f1(void);
+extern DL_EXPORT(int) __cdecl f2(void);
+extern DL_EXPORT(int) __stdcall f3(void);
+extern DL_EXPORT(int) __fastcall f4(void);
+#ifdef __cplusplus
+}
+#endif
+
+int f1(void) {return 0;}
+int __cdecl f2(void) {return 0;}
+int __stdcall f3(void) {return 0;}
+int __fastcall f4(void) {return 0;}
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern int (*p1)(void);
+extern int (__cdecl *p2)(void);
+extern int (__stdcall *p3)(void);
+extern int (__fastcall *p4)(void);
+#ifdef __cplusplus
+}
+#endif
+
+int (*p1)(void);
+int (__cdecl *p2)(void);
+int (__stdcall *p3)(void);
+int (__fastcall *p4)(void);
index cfca6822854ce681243777f12ab264e85aa9fd34..0e3fa9dbe33bf92795baa4eb9014e6d628155842 100644 (file)
@@ -1,3 +1,7 @@
+cdef extern from "callingconvention.h":
+    pass
+
+
 cdef extern int f1()
 
 cdef extern int __cdecl f2()
diff --git a/tests/compile/declarations.h b/tests/compile/declarations.h
new file mode 100644 (file)
index 0000000..d803e97
--- /dev/null
@@ -0,0 +1,53 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern char *cp;
+extern char *cpa[5];
+extern int (*ifnpa[5])(void);
+extern char *(*cpfnpa[5])(void);
+extern int (*ifnp)(void);
+extern int (*iap)[5];
+#ifdef __cplusplus
+}
+#endif
+
+char *cp;
+char *cpa[5];
+int (*ifnpa[5])(void);
+char *(*cpfnpa[5])(void);
+int (*ifnp)(void);
+int (*iap)[5];
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern DL_EXPORT(int) ifn(void);
+extern DL_EXPORT(char *) cpfn(void);
+extern DL_EXPORT(int) fnargfn(int (void));
+extern DL_EXPORT(int) (*iapfn(void))[5];
+extern DL_EXPORT(char *)(*cpapfn(void))[5];
+#ifdef __cplusplus
+}
+#endif
+
+int ifn(void) {return 0;}
+char *cpfn(void) {return 0;}
+int fnargfn(int f(void)) {return 0;}
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern int ia[];
+extern int iaa[][3];
+extern DL_EXPORT(int) a(int[][3], int[][3][5]);
+#ifdef __cplusplus
+}
+#endif
+
+int ia[1];
+int iaa[][3];
+int a(int a[][3], int b[][3][5]) {return 0;}
index cf6b5668e9a95d5f01371bfa43eb7f476de031c7..b8705770e31f65e4744d051e83d273c374d1c051 100644 (file)
@@ -1,3 +1,6 @@
+cdef extern from "declarations.h":
+    pass
+
 cdef extern char *cp
 cdef extern char *cpa[5]
 cdef extern int (*ifnpa[5])()
diff --git a/tests/compile/excvalcheck.h b/tests/compile/excvalcheck.h
new file mode 100644 (file)
index 0000000..4c92acd
--- /dev/null
@@ -0,0 +1,13 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern DL_EXPORT(int) spam(void);
+extern DL_EXPORT(void) grail(void);
+extern DL_EXPORT(char *)tomato(void);
+#ifdef __cplusplus
+}
+#endif
+
+int spam(void) {return 0;}
+void grail(void) {return;}
+char *tomato(void) {return 0;}
index 4dbce95c90e82070fc9cd27283ace0cf0220dbaf..9c84eb624a6e9eadd24b29bc4e218cd36962f71a 100644 (file)
@@ -1,3 +1,6 @@
+cdef extern from "excvalcheck.h":
+    pass
+
 cdef extern int spam() except -1
 cdef extern void grail() except *
 cdef extern char *tomato() except? NULL
index fb2e4d4e2c446355da6f6fca1194b9963884f280..2c66be05d72c91f65a476dc0eb145b1b8c937aee 100644 (file)
@@ -1,2 +1,25 @@
-void e1(void);
-void *e2(void);
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern DL_EXPORT(void) e1(void);
+extern DL_EXPORT(void *) e2(void);
+#ifdef __cplusplus
+}
+#endif
+
+void e1(void) {return;}
+void *e2(void) {return 0;}
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern DL_EXPORT(PyObject *) g(PyObject*);
+extern DL_EXPORT(void) g2(PyObject*);
+#ifdef __cplusplus
+}
+#endif
+
+PyObject *g(PyObject* o) {return 0;}
+void g2(PyObject* o) {return;}