Commit 1fcaf853 authored by Robert Bradshaw's avatar Robert Bradshaw

ptrdif_t test

parent 3087d7fd
......@@ -3456,7 +3456,7 @@ c_py_hash_t_type = CPyHashTType(RANK_LONG+0.5, SIGNED)
c_py_ssize_t_type = CPySSizeTType(RANK_LONG+0.5, SIGNED)
c_ssize_t_type = CSSizeTType(RANK_LONG+0.5, SIGNED)
c_size_t_type = CSizeTType(RANK_LONG+0.5, UNSIGNED)
c_ptrdiff_t_type = CPtrdiffTType(RANK_LONG+0.25, SIGNED)
c_ptrdiff_t_type = CPtrdiffTType(RANK_LONG+0.75, SIGNED)
c_null_ptr_type = CNullPtrType(c_void_type)
c_void_ptr_type = CPtrType(c_void_type)
......
from cython cimport typeof
def test(ptrdiff_t i):
"""
>>> test(0)
0
>>> test(1)
1
>>> test(2)
2
>>> test(-1)
-1
>>> test(-2)
-2
>>> str(test((1<<31)-1))
'2147483647'
"""
return i
cdef class A:
"""
>>> try: test(1<<200)
... except (OverflowError, TypeError): print("ERROR")
ERROR
>>> a = A(1,2)
>>> a.a == 1
True
>>> a.b == 2
True
>>> a.foo(5)
5
>>> try: a.foo(1<<200)
... except (OverflowError, TypeError): print("ERROR")
ERROR
"""
cdef public ptrdiff_t a
cdef readonly ptrdiff_t b
def __init__(self, ptrdiff_t a, object b):
self.a = a
self.b = b
cpdef ptrdiff_t foo(self, ptrdiff_t x):
cdef object o = x
return o
def test_types():
"""
>>> test_types()
"""
cdef int a = 1, b = 2
assert typeof(&a - &b) == "ptrdiff_t", typeof(&a - &b)
assert typeof((&a - &b) + 1) == "ptrdiff_t", typeof((&a - &b) + 1)
assert typeof(&a + (&b - &a)) == "int *", typeof(&a + (&b - &a))
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment