new test cases from Pyrex
authorStefan Behnel <scoder@users.berlios.de>
Wed, 11 Jun 2008 19:55:02 +0000 (21:55 +0200)
committerStefan Behnel <scoder@users.berlios.de>
Wed, 11 Jun 2008 19:55:02 +0000 (21:55 +0200)
tests/errors/e_badexcvaltype.pyx [new file with mode: 0644]
tests/errors/e_badfuncargtype.pyx [new file with mode: 0644]
tests/errors/e_badpyparam.pyx [new file with mode: 0644]
tests/errors/e_badtypeuse.pyx [new file with mode: 0644]

diff --git a/tests/errors/e_badexcvaltype.pyx b/tests/errors/e_badexcvaltype.pyx
new file mode 100644 (file)
index 0000000..fef2aca
--- /dev/null
@@ -0,0 +1,6 @@
+cdef char *spam() except -1:
+       pass
+
+_ERRORS = u"""
+1:26: Exception value incompatible with function return type
+"""
diff --git a/tests/errors/e_badfuncargtype.pyx b/tests/errors/e_badfuncargtype.pyx
new file mode 100644 (file)
index 0000000..5e23d30
--- /dev/null
@@ -0,0 +1,12 @@
+cdef struct Spam
+
+cdef extern int spam(void)           # function argument cannot be void
+cdef extern int grail(int i, void v) # function argument cannot be void
+cdef int tomato(Spam s):             # incomplete type
+       pass
+
+_ERRORS = u"""
+3:21: Use spam() rather than spam(void) to declare a function with no arguments.
+4:29: Use spam() rather than spam(void) to declare a function with no arguments.
+5:16: Argument type 'Spam' is incomplete
+"""
diff --git a/tests/errors/e_badpyparam.pyx b/tests/errors/e_badpyparam.pyx
new file mode 100644 (file)
index 0000000..8e9d04f
--- /dev/null
@@ -0,0 +1,7 @@
+cdef struct Foo
+
+def f(Foo *p):
+       pass
+_ERRORS = u"""
+/Local/Projects/D/Pyrex/Source/Tests/Errors2/e_badpyparam.pyx:3:6: Cannot convert Python object argument to type 'Foo *'
+"""
diff --git a/tests/errors/e_badtypeuse.pyx b/tests/errors/e_badtypeuse.pyx
new file mode 100644 (file)
index 0000000..3814a1a
--- /dev/null
@@ -0,0 +1,38 @@
+cdef struct Grail
+
+cdef extern object xobj # Python object cannot be extern
+cdef object aobj[42]    # array element cannot be Python object
+cdef object *pobj       # pointer base type cannot be Python object
+
+cdef int spam[] # incomplete variable type
+cdef Grail g     # incomplete variable type
+cdef void nada   # incomplete variable type
+
+cdef int a_spam[17][]  # incomplete element type
+cdef Grail a_g[42]     # incomplete element type
+cdef void a_nada[88]   # incomplete element type
+
+cdef struct Eggs:
+       int spam[]
+
+cdef f(Grail g,   # incomplete argument type
+       void v,         # incomplete argument type
+       int a[]):
+               pass
+
+_ERRORS = u"""
+3:19: Python object cannot be declared extern
+4:16: Array element cannot be a Python object
+5:12: Pointer base type cannot be a Python object
+7:13: Variable type 'int []' is incomplete
+8:11: Variable type 'Grail' is incomplete
+9:10: Variable type 'void' is incomplete
+11:15: Array element type 'int []' is incomplete
+12:14: Array element type 'Grail' is incomplete
+13:16: Array element type 'void' is incomplete
+16:9: Variable type 'int []' is incomplete
+#19:1: Function argument cannot be void
+19:1: Use spam() rather than spam(void) to declare a function with no arguments.
+18:7: Argument type 'Grail' is incomplete
+19:1: Invalid use of 'void'
+"""