1# ticket: 399 2 3__doc__ = u""" 4>>> test(-2) 5-2 6>>> test(-1) 7-1 8>>> test(0) 90 10>>> test(1) 111 12>>> test(2) 132 14 15>>> test(SSIZE_T_MAX) == SSIZE_T_MAX 16True 17>>> test(SSIZE_T_MIN) == SSIZE_T_MIN 18True 19 20>>> test(SSIZE_T_MAX+1) #doctest: +ELLIPSIS 21Traceback (most recent call last): 22 ... 23OverflowError: ... 24>>> test(SSIZE_T_MIN-1) #doctest: +ELLIPSIS 25Traceback (most recent call last): 26 ... 27OverflowError: ... 28 29>>> test(1<<128) #doctest: +ELLIPSIS 30Traceback (most recent call last): 31 ... 32OverflowError: ... 33>>> test(-(1<<128)) #doctest: +ELLIPSIS 34Traceback (most recent call last): 35 ... 36OverflowError: ... 37 38>>> a = A(1,2) 39>>> a.a == 1 40True 41>>> a.b == 2 42True 43>>> a.foo(5) 445 45>>> a.foo(1 << 180) #doctest: +ELLIPSIS 46Traceback (most recent call last): 47 ... 48OverflowError: ... 49""" 50 51cdef extern from *: 52 ctypedef long ssize_t # XXX This should generate a warning !!! 53 ssize_t PY_SSIZE_T_MAX 54 ssize_t PY_SSIZE_T_MIN 55 56SSIZE_T_MAX = PY_SSIZE_T_MAX 57SSIZE_T_MIN = PY_SSIZE_T_MIN 58 59def test(ssize_t i): 60 return i 61 62cdef class A: 63 cdef public ssize_t a 64 cdef readonly ssize_t b 65 66 def __init__(self, ssize_t a, object b): 67 self.a = a 68 self.b = b 69 70 cpdef ssize_t foo(self, ssize_t x): 71 cdef object o = x 72 return o 73