cython
1# ticket: t399
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 *:
52ctypedef long ssize_t # XXX This should generate a warning !!!
53ssize_t PY_SSIZE_T_MAX
54ssize_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):
60return i
61
62cdef class A:
63cdef public ssize_t a
64cdef readonly ssize_t b
65
66def __init__(self, ssize_t a, object b):
67self.a = a
68self.b = b
69
70cpdef ssize_t foo(self, ssize_t x):
71cdef object o = x
72return o
73