cython
1# mode: run
2# tag: closures
3# preparse: id
4# preparse: def_to_cdef
5#
6# closure_tests_1.pyx
7#
8# Battery of tests for closures in Cython. Based on the collection of
9# compiler tests from P423/B629 at Indiana University, Spring 1999 and
10# Fall 2000. Special thanks to R. Kent Dybvig, Dan Friedman, Kevin
11# Millikin, and everyone else who helped to generate the original
12# tests. Converted into a collection of Python/Cython tests by Craig
13# Citro.
14#
15# Note: This set of tests is split (somewhat randomly) into several
16# files, simply because putting all the tests in a single file causes
17# gcc and g++ to buckle under the load.
18#
19
20def g1425():
21"""
22>>> g1425()
23142
24"""
25if (True):
26def g1424():
27if (True):
28return 122
29return (20)+(g1424())
30else:
31return 10000
32
33
34def g1432():
35"""
36>>> g1432()
37[0, []]
38"""
39def g1431():
40return [0,[]]
41x_1056 = g1431()
42if (x_1056):
43def g1430():
44def g1429():
45return (x_1056[0])
46def g1428():
47return (x_1056[0])
48return (g1429())+(g1428())
49x_1056[0] = g1430()
50return x_1056
51
52
53def g1435():
54"""
55>>> g1435()
564000
57"""
58def g1434():
59def g1433(y_1057):
60return y_1057
61return g1433
62return g1434()(4000)
63
64
65def g1438():
66"""
67>>> g1438()
681
69"""
70def g1437():
71def g1436(x_1058):
72return x_1058
73return g1436
74f_1059 = g1437()
75return (f_1059(0)+1)
76
77
78def g1441():
79"""
80>>> g1441()
814
82"""
83def g1440():
84def g1439(y_1060):
85return y_1060
86return g1439
87f_1061 = g1440()
88return f_1061(f_1061(4))
89
90
91def g1446():
92"""
93>>> g1446()
944
95"""
96def g1445():
97def g1444(f_1063):
98return f_1063(f_1063(4))
99return g1444
100def g1443():
101def g1442(y_1062):
102return y_1062
103return g1442
104return g1445()(g1443())
105
106
107def g1449():
108"""
109>>> g1449()
1109000
111"""
112def g1448():
113a_1064 = 4000
114def g1447(b_1065):
115return (a_1064)+(b_1065)
116return g1447
117return g1448()(5000)
118
119
120def g1454():
121"""
122>>> g1454()
1239000
124"""
125def g1453():
126def g1452():
127def g1450(a_1066):
128def g1451(b_1067):
129return (a_1066)+(b_1067)
130return g1451
131return g1450
132return g1452()(4000)
133return g1453()(5000)
134
135
136def g1459():
137"""
138>>> g1459()
1392
140"""
141def g1458():
142def g1457(f_1069):
143return f_1069(f_1069(0))
144return g1457
145def g1456():
146def g1455(x_1068):
147return (x_1068+1)
148return g1455
149return g1458()(g1456())
150
151
152def g1462():
153"""
154>>> g1462()
1550
156"""
157x_1072 = 0
158def g1461():
159def g1460(x_1070):
160return x_1070
161return g1460
162f_1071 = g1461()
163a_1075 = f_1071(x_1072)
164b_1074 = f_1071(x_1072)
165c_1073 = f_1071(x_1072)
166return ((a_1075)+(b_1074))+(c_1073)
167
168
169def g1465():
170"""
171>>> g1465()
1723
173"""
174x_1080 = 0
175y_1079 = 1
176z_1078 = 2
177def g1464():
178def g1463(x_1076):
179return x_1076
180return g1463
181f_1077 = g1464()
182a_1083 = f_1077(x_1080)
183b_1082 = f_1077(y_1079)
184c_1081 = f_1077(z_1078)
185return ((a_1083)+(b_1082))+(c_1081)
186
187
188def g1468():
189"""
190>>> g1468()
1910
192"""
193def g1467():
194def g1466(x_1085, y_1084):
195return x_1085
196return g1466
197f_1086 = g1467()
198a_1087 = f_1086(0, 1)
199return f_1086(a_1087, a_1087)
200
201
202def g1471():
203"""
204>>> g1471()
2050
206"""
207x_1094 = 0
208y_1093 = 1
209z_1092 = 2
210def g1470():
211def g1469(x_1090, y_1089, z_1088):
212return x_1090
213return g1469
214f_1091 = g1470()
215a_1097 = f_1091(x_1094, y_1093, z_1092)
216b_1096 = y_1093
217c_1095 = z_1092
218return f_1091(a_1097, b_1096, c_1095)
219
220
221def g1474():
222"""
223>>> g1474()
2243
225"""
226def g1473():
227def g1472(a_1101, b_1100, c_1099, d_1098):
228return (a_1101)+(d_1098)
229return g1472
230f_1102 = g1473()
231return f_1102(0, 1, 2, 3)
232
233
234def g1478():
235"""
236>>> g1478()
2373
238"""
239def g1477():
240def g1476(x_1103):
241return x_1103
242return g1476
243f_1104 = g1477()
244def g1475():
245a_1107 = 0
246b_1106 = 1
247c_1105 = 2
248return (f_1104(a_1107))+((f_1104(b_1106))+(f_1104(c_1105)))
249return (f_1104(0))+(g1475())
250
251
252def g1483():
253"""
254>>> g1483()
255"""
256a_1108 = 0
257def g1482():
258def g1481():
259return 0
260return g1481
261a_1110 = g1482()
262def g1480():
263def g1479():
264return 11
265return g1479
266b_1109 = g1480()
267a_1110 = 11
268
269
270def g1486():
271"""
272>>> g1486()
273"""
274a_1111 = 0
275def g1485():
276def g1484():
277a_1113 = 0
278return g1484
279a_1113 = g1485()
280b_1112 = 11
281return a_1113()
282
283
284def g1491():
285"""
286>>> g1491()
2870
288"""
289def g1490():
290def g1489():
291return 0
292return g1489
293a_1115 = g1490()
294def g1488():
295def g1487():
296return 11
297return g1487
298b_1114 = g1488()
299return a_1115()
300
301
302def g1494():
303"""
304>>> g1494()
3052
306"""
307def g1493():
308x_1116 = 1
309def g1492(y_1117):
310return (x_1116)+(y_1117)
311return g1492
312f_1118 = g1493()
313x_1119 = 0
314return f_1118(f_1118(x_1119))
315
316
317def g1501():
318"""
319>>> g1501()
3203050
321"""
322def g1500():
323def g1499():
324def g1498(x_1121):
325return (x_1121)+(50)
326return g1498
327t_1122 = g1499()
328def g1497(f_1123):
329return t_1122(f_1123(1000))
330return g1497
331def g1496():
332def g1495(y_1120):
333return (y_1120)+(2000)
334return g1495
335return g1500()(g1496())
336
337
338def g1508():
339"""
340>>> g1508()
34160
342"""
343def g1507():
344def g1506():
345def g1505():
346def g1502(a_1124):
347def g1503(b_1125):
348def g1504(c_1126):
349return (a_1124)+((b_1125)+(c_1126))
350return g1504
351return g1503
352return g1502
353return g1505()(10)
354return g1506()(20)
355return g1507()(30)
356
357
358def g1513():
359"""
360>>> g1513()
3615
362"""
363def g1512():
364def g1509(b_1127):
365def g1511():
366def g1510(a_1128):
367return (b_1127)+(a_1128)
368return g1510
369return g1511()(2)
370return g1509
371return g1512()(3)
372
373
374def g1518():
375"""
376>>> g1518()
3775
378"""
379def g1517():
380def g1516(f_1130):
381return f_1130(f_1130(5))
382return g1516
383def g1515():
384def g1514(x_1129):
385return x_1129
386return g1514
387return g1517()(g1515())
388
389
390def g1523():
391"""
392>>> g1523()
3938000
394"""
395def g1522():
396def g1521():
397def g1520(x_1131):
398return (x_1131)+(3000)
399return g1520
400f_1132 = g1521()
401def g1519(y_1133):
402return f_1132(f_1132(y_1133))
403return g1519
404return g1522()(2000)
405
406