cython
1# ticket: t203
2
3cdef int get_bound(int m):
4print u"get_bound(%s)"%m
5return m
6
7def for_from_range(a, b):
8"""
9>>> for_from_range(5, 10)
10range(5)
11at 0
12at 1
13at 2
14at 3
15at 4
16range(5, 10)
17at 5
18at 6
19at 7
20at 8
21at 9
22range(5, 10, 2)
23at 5
24at 7
25at 9
269
27>>> for_from_range(-5, -10)
28range(-5)
29range(-5, -10)
30range(-5, -10, 2)
31100
32"""
33cdef int i = 100
34print u"range(%s)" % a
35for i in range(a):
36print u"at", i
37print u"range(%s, %s)" % (a, b)
38for i in range(a, b):
39print u"at", i
40print u"range(%s, %s, %s)" % (a, b, 2)
41for i in range(a, b, 2):
42print u"at", i
43return i
44
45def for_from_bound_reassignment(int bound, int fake_bound):
46"""
47>>> for_from_bound_reassignment(5, 1)
48at 0
49at 1
50at 2
51at 3
52at 4
535
54"""
55cdef int i = 100
56for i from 0 <= i < bound:
57print u"at", i
58bound = fake_bound
59return i
60
61def for_from_step_reassignment(int bound, int step, int fake_step):
62"""
63>>> for_from_step_reassignment(15, 5, 2)
64at 0
65at 5
66at 10
6715
68"""
69cdef int i = 100
70for i from 0 <= i < bound by step:
71print u"at", i
72step = fake_step
73return i
74
75def for_from_target_reassignment(int bound, int factor):
76"""
77>>> for_from_target_reassignment(10, 2)
78at 0
79at 1
80at 3
81at 7
8215
83"""
84cdef int i = 100
85for i from 0 <= i < bound:
86print u"at", i
87i *= factor
88return i
89
90def for_from_py_target_reassignment(int bound, int factor):
91"""
92>>> for_from_py_target_reassignment(10, 2)
93at 0
94at 1
95at 3
96at 7
9715
98"""
99cdef object i
100for i from 0 <= i < bound:
101print u"at", i
102i *= factor
103return i
104
105def for_from_py_global_target_reassignment(int bound, int factor):
106"""
107>>> for_from_py_global_target_reassignment(10, 2)
108at 0
109at 1
110at 3
111at 7
11215
113"""
114global g_var
115for g_var from 0 <= g_var < bound:
116print u"at", g_var
117g_var *= factor
118return g_var
119
120def for_in_target_reassignment(int bound, int factor):
121"""
122>>> for_in_target_reassignment(10, 2)
123at 0
124at 1
125at 2
126at 3
127at 4
128at 5
129at 6
130at 7
131at 8
132at 9
13318
134"""
135cdef int i = 100
136for i in range(bound):
137print u"at", i
138i *= factor
139return i
140
141def test_func(int n):
142"""
143>>> test_func(5)
144get_bound(5)
145at 0
146at 1
147at 2
148at 3
149at 4
1505
151"""
152cdef int i = 100
153for i from 0 <= i < get_bound(n):
154print u"at", i
155return i
156