cython
1# mode: run
2# tag: closures
3# preparse: id
4# preparse: def_to_cdef
5#
6# closure_tests_4.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
20
21def g1852():
22"""
23>>> g1852()
24[3, 42]
25"""
26def g1851():
27def g1850(x_1333):
28x_1334 = 3
29return 3
30return g1850
31f_1332 = g1851()
32def g1848():
33def g1847(x_1336):
34y_1337 = 14
35y_1337 = 7
36return y_1337
37return g1847
38g_1335 = g1848()
39def g1849():
40return [g_1335,3]
41g_1335 = g1849()
42def g1846():
43def g1845(x_1340):
44return x_1340
45return g1845
46h_1339 = g1846()
47z_1338 = 42
48def g1844():
49return (g_1335[1])
50return [g1844(),h_1339(z_1338)]
51
52
53def g1864():
54"""
55>>> g1864()
56True
57"""
58t_1342 = True
59f_1341 = False
60def g1863():
61return [t_1342,f_1341]
62bools_1345 = g1863()
63def g1862():
64def g1861(x_1343):
65if ((not x_1343)):
66return f_1341
67else:
68return t_1342
69return g1861
70id_1344 = g1862()
71def g1860():
72def g1857(x_1349):
73def g1859():
74return x_1349 == 0
75if (g1859()):
76def g1858():
77return (bools_1345[0])
78return id_1344(g1858())
79else:
80return odd_1346((x_1349)-(1))
81return g1857
82even_1347 = g1860()
83def g1856():
84def g1853(y_1348):
85def g1855():
86return y_1348 == 0
87if (g1855()):
88def g1854():
89return (bools_1345[1])
90return id_1344(g1854())
91else:
92return even_1347((y_1348)-(1))
93return g1853
94odd_1346 = g1856()
95return odd_1346(5)
96
97
98def g1872():
99"""
100>>> g1872()
10135
102"""
103a_1350 = 5
104def g1871():
105return [a_1350,6]
106b_1351 = g1871()
107def g1870():
108def g1869(x_1352):
109return (x_1352)*(a_1350)
110return g1869
111f_1353 = g1870()
112def g1867():
113def g1866():
114return (b_1351[0])
115return (f_1353(a_1350))-(g1866())
116if (g1867()):
117def g1868():
118if ((not a_1350)):
119return (2)*(a_1350)
120else:
121return (2)+(a_1350)
122b_1351[0] = g1868()
123f_1353(a_1350)
124else:
125if ((not (not (f_1353(a_1350) < b_1351)))): (f_1353(a_1350))
126def g1865():
127return (b_1351[0])
128return f_1353(g1865())
129
130
131def g1885():
132"""
133>>> g1885()
1349
135"""
136def g1884():
137def g1883(x_1368, y_1367):
138if ((not x_1368)):
139return g_1355((x_1368+1), (y_1367+1))
140else:
141return h_1354((x_1368)+(y_1367))
142return g1883
143f_1356 = g1884()
144def g1882():
145def g1875(u_1359, v_1358):
146a_1361 = (u_1359)+(v_1358)
147b_1360 = (u_1359)*(v_1358)
148def g1881():
149def g1876(d_1363):
150def g1880():
151return [a_1361,b_1360]
152p_1365 = g1880()
153def g1879():
154def g1877(m_1366):
155if ((m_1366 < u_1359)):
156return f_1356(m_1366, d_1363)
157else:
158def g1878():
159return (p_1365[0])
160return h_1354(g1878())
161return g1877
162q_1364 = g1879()
163return q_1364(f_1356(a_1361, b_1360))
164return g1876
165e_1362 = g1881()
166return e_1362(u_1359)
167return g1875
168g_1355 = g1882()
169def g1874():
170def g1873(w_1357):
171return w_1357
172return g1873
173h_1354 = g1874()
174return f_1356(4, 5)
175
176
177def g1897():
178"""
179>>> g1897()
18022
181"""
182def g1896():
183def g1890(x_1373):
184def g1895():
185def g1894():
186def g1893():
187def g1891(y_1374):
188def g1892(z_1375):
189return (y_1374)+(z_1375)
190return g1892
191return g1891
192return g1893()(6)
193return g1894()(7)
194return (x_1373)+(g1895())
195return g1890
196f_1370 = g1896()
197def g1889():
198def g1888():
199def g1887():
200def g1886(w_1372, u_1371):
201return (w_1372)+(u_1371)
202return g1886
203return g1887()(8, 9)
204return (5)+(g1888())
205g_1369 = g1889()
206return g_1369
207
208
209def g1923():
210"""
211>>> g1923()
212True
213"""
214y_1377 = []
215z_1376 = 10
216def g1911():
217return [5,y_1377]
218test_ls_1378 = g1911()
219def g1922():
220def g1913(f_1379):
221def g1921():
222def g1918(g_1382):
223def g1920():
224def g1919(x_1383):
225return g_1382(g_1382)(x_1383)
226return g1919
227return f_1379(g1920())
228return g1918
229def g1917():
230def g1914(g_1380):
231def g1916():
232def g1915(x_1381):
233return g_1380(g_1380)(x_1381)
234return g1915
235return f_1379(g1916())
236return g1914
237return g1921()(g1917())
238return g1913
239y_1377 = g1922()
240def g1912():
241return [z_1376,test_ls_1378]
242test_ls_1378 = g1912()
243def g1910():
244def g1906(ls_1385):
245def g1909():
246return (ls_1385 == [])
247if (g1909()):
248return 0
249else:
250def g1908():
251def g1907():
252return (ls_1385[1])
253return length_1384(g1907())
254return (1)+(g1908())
255return g1906
256length_1384 = g1910()
257len_1386 = length_1384(test_ls_1378)
258def g1905():
259def g1904():
260def g1903():
261def g1898(len_1387):
262def g1899(ls_1388):
263def g1902():
264return (ls_1388 == [])
265if (g1902()):
266return 0
267else:
268def g1901():
269def g1900():
270return (ls_1388[1])
271return len_1387(g1900())
272return (1)+(g1901())
273return g1899
274return g1898
275return y_1377(g1903())
276length_1384 = g1904()
277return length_1384(test_ls_1378)
278return (g1905() == len_1386)
279
280
281def g1927():
282"""
283>>> g1927()
2840
285"""
286def g1926():
287def g1924():
288def g1925():
289return loop_1389()
290return g1925
291return g1924
292loop_1389 = g1926()
293loop_1389()
294return 0
295
296
297def g1935():
298"""
299>>> g1935()
300668
301"""
302def g1934():
303def g1928():
304def g1933():
305def g1931(link_1392):
306def g1932():
307return link_1392()
308return g1932
309return g1931
310loop_1391 = g1933()
311def g1930():
312def g1929():
313return 668
314return g1929
315return loop_1391(g1930())
316return g1928
317f_1390 = g1934()
318return f_1390()()
319
320
321def g1946():
322"""
323>>> g1946()
32414629
325"""
326def g1945():
327def g1944():
328return 1
329return g1944
330if (g1945()):
331a_1393 = 2
332def g1943():
333def g1942():
334def g1941():
335def g1938(x_1394):
336def g1940():
337def g1939():
338a_1393 = 1
339a_1393 = g1939()
340x_1395 = g1940()
341return x_1395
342return g1938
343return g1941()(1)
344if (g1942()):
345def g1937():
346def g1936():
347return None
348return (a_1393 == g1936())
349if (g1937()):
350return True
351else:
352return False
353else:
354return False
355if (g1943()):
356return 778477
357else:
358return 14629
359
360
361def g1949():
362"""
363>>> g1949()
3642
365"""
366def g1948():
367def g1947(x_1396):
368return x_1396
369return g1947
370f_1397 = g1948()
371a_1398 = 1
372return ((f_1397(a_1398))+(a_1398))*(a_1398)
373
374
375def g1952():
376"""
377>>> g1952()
37817
379"""
380def g1951():
381def g1950(x_1400, y_1399):
382return x_1400
383return g1950
384k_1401 = g1951()
385b_1402 = 17
386return k_1401(k_1401(k_1401, 37), 37)(b_1402, (b_1402)*(b_1402))
387
388
389def g1956():
390"""
391>>> g1956()
392False
393"""
394def g1955():
395def g1953():
396n_1403 = 256
397def g1954():
398return ([0]*n_1403)
399v_1404 = g1954()
400v_1404[32] = n_1403
401return v_1404[32]
402return g1953
403f_1405 = g1955()
404return isinstance(f_1405(), list)
405
406
407def g1959():
408"""
409>>> g1959()
41060
411"""
412w_1409 = 4
413x_1408 = 8
414y_1407 = 16
415z_1406 = 32
416def g1958():
417def g1957():
418return (w_1409)+((x_1408)+((y_1407)+(z_1406)))
419return g1957
420f_1410 = g1958()
421return f_1410()
422
423
424def g1965():
425"""
426>>> g1965()
42737
428"""
429def g1964():
430def g1962(g_1412, u_1411):
431def g1963():
432if (u_1411):
433return g_1412(37)
434else:
435return u_1411
436return g_1412(g1963())
437return g1962
438f_1413 = g1964()
439def g1961():
440def g1960(x_1414):
441return x_1414
442return g1960
443return f_1413(g1961(), 75)
444
445
446def g1971():
447"""
448>>> g1971()
4494687
450"""
451def g1970():
452def g1968(h_1416, u_1415):
453def g1969():
454if (u_1415):
455return h_1416((u_1415)+(37))
456else:
457return u_1415
458return h_1416(g1969())
459return g1968
460f_1418 = g1970()
461w_1417 = 62
462def g1967():
463def g1966(x_1419):
464return (w_1417)-(x_1419)
465return g1966
466return f_1418(g1967(), (75)*(w_1417))
467
468
469def g1983():
470"""
471>>> g1983()
472True
473"""
474t_1421 = True
475f_1420 = False
476def g1982():
477return [t_1421,f_1420]
478bools_1424 = g1982()
479def g1981():
480def g1980(x_1422):
481if ((not x_1422)):
482return f_1420
483else:
484return t_1421
485return g1980
486id_1423 = g1981()
487def g1979():
488def g1976(x_1428):
489def g1978():
490def g1977():
491return x_1428 == 0
492return id_1423(g1977())
493if (g1978()):
494return (bools_1424[0])
495else:
496return odd_1425((x_1428)-(1))
497return g1976
498even_1426 = g1979()
499def g1975():
500def g1972(y_1427):
501def g1974():
502return y_1427 == 0
503if (g1974()):
504def g1973():
505return (bools_1424[1])
506return id_1423(g1973())
507else:
508return even_1426((y_1427)-(1))
509return g1972
510odd_1425 = g1975()
511return odd_1425(5)
512
513
514def g1990():
515"""
516>>> g1990()
51748
518"""
519def g1989():
520def g1984(x_1431, y_1430, z_1429):
521def g1988():
522def g1987(u_1435, v_1434):
523x_1431 = u_1435
524return (x_1431)+(v_1434)
525return g1987
526f_1437 = g1988()
527def g1986():
528def g1985(r_1433, s_1432):
529y_1430 = (z_1429)+(s_1432)
530return y_1430
531return g1985
532g_1436 = g1986()
533return (f_1437(1, 2))*(g_1436(3, 4))
534return g1984
535return g1989()(10, 11, 12)
536
537
538def g1997():
539"""
540>>> g1997()
541176
542"""
543def g1996():
544def g1991(x_1440, y_1439, z_1438):
545f_1444 = False
546def g1995():
547def g1994(r_1442, s_1441):
548y_1439 = (z_1438)+(s_1441)
549return y_1439
550return g1994
551g_1443 = g1995()
552def g1993():
553def g1992(u_1446, v_1445):
554v_1445 = u_1446
555return (x_1440)+(v_1445)
556return g1992
557f_1444 = g1993()
558return (f_1444(1, 2))*(g_1443(3, 4))
559return g1991
560return g1996()(10, 11, 12)
561
562
563def g2002():
564"""
565>>> g2002()
5665
567"""
568def g2001():
569def g2000(x_1450):
570return (x_1450)+(1)
571return g2000
572f_1448 = g2001()
573def g1999():
574def g1998(y_1449):
575return f_1448(f_1448(y_1449))
576return g1998
577g_1447 = g1999()
578return (f_1448(1))+(g_1447(1))
579
580
581def g2010():
582"""
583>>> g2010()
5841521
585"""
586y_1451 = 3
587def g2009():
588def g2007(x_1457):
589def g2008():
590return x_1457 == 0
591if (g2008()):
592return g_1453((x_1457)+(1))
593else:
594return f_1454((x_1457)-(y_1451))
595return g2007
596f_1454 = g2009()
597def g2006():
598def g2005(x_1456):
599return h_1452((x_1456)*(x_1456))
600return g2005
601g_1453 = g2006()
602def g2004():
603def g2003(x_1455):
604return x_1455
605return g2003
606h_1452 = g2004()
607return g_1453(39)
608
609
610def g2017():
611"""
612>>> g2017()
613-1
614"""
615def g2014():
616def g2013(x_1461):
617return (x_1461)+(1)
618return g2013
619f_1459 = g2014()
620def g2012():
621def g2011(y_1460):
622return f_1459(f_1459(y_1460))
623return g2011
624g_1458 = g2012()
625def g2016():
626def g2015(x_1462):
627return (x_1462)-(1)
628return g2015
629f_1459 = g2016()
630return (f_1459(1))+(g_1458(1))
631
632
633def g2032():
634"""
635>>> g2032()
636[52, [17, [35, [17, 35]]]]
637"""
638def g2031():
639def g2030():
640return (a_1465)+(b_1464)
641return g2030
642f_1466 = g2031()
643a_1465 = 17
644b_1464 = 35
645def g2029():
646def g2028():
647def g2027():
648return a_1465
649return g2027
650def g2026():
651def g2025():
652return b_1464
653return g2025
654return [g2028(),g2026()]
655h_1463 = g2029()
656def g2024():
657def g2023():
658def g2022():
659def g2021():
660def g2020():
661return (h_1463[0])
662return g2020()()
663def g2019():
664def g2018():
665return (h_1463[1])
666return g2018()()
667return [g2021(),g2019()]
668return [b_1464,g2022()]
669return [a_1465,g2023()]
670return [f_1466(),g2024()]
671
672
673def g2038():
674"""
675>>> g2038()
676120
677"""
678x_1469 = 5
679def g2037():
680a_1467 = 1
681def g2036():
682return a_1467
683return g2036
684th_1468 = g2037()
685def g2035():
686def g2033(n_1472, th_1471):
687def g2034():
688return n_1472 == 0
689if (g2034()):
690return th_1471()
691else:
692return (n_1472)*(fact_1470((n_1472)-(1), th_1471))
693return g2033
694fact_1470 = g2035()
695return fact_1470(x_1469, th_1468)
696
697
698def g2046():
699"""
700>>> g2046()
701[120, -120]
702"""
703def g2045():
704def g2044(n_1473):
705return (n_1473 < 0)
706return g2044
707negative_1474 = g2045()
708def g2043():
709def g2041(n_1478):
710def g2042():
711return n_1478 == 0
712if (g2042()):
713return 1
714else:
715return (n_1478)*(fact_1476((n_1478)-(1)))
716return g2041
717fact_1476 = g2043()
718def g2040():
719def g2039(n_1477):
720if ((not negative_1474(n_1477))):
721return fact_1476(n_1477)
722else:
723return (0)-(fact_1476((0)-(n_1477)))
724return g2039
725call_fact_1475 = g2040()
726return [call_fact_1475(5),call_fact_1475(-5)]
727
728
729def g2050():
730"""
731>>> g2050()
732[0, 1, 2, 3]
733"""
734def g2049():
735def g2048(v_1482, i_1481, n_1480):
736if ((not (i_1481 == n_1480))):
737v_1482[i_1481] = i_1481
738return iota_fill_1479(v_1482, (i_1481)+(1), n_1480)
739return g2048
740iota_fill_1479 = g2049()
741n_1483 = 4
742def g2047():
743return ([0]*n_1483)
744v_1484 = g2047()
745iota_fill_1479(v_1484, 0, n_1483)
746return v_1484
747
748
749def g2061():
750"""
751>>> g2061()
752[[33, 55], [77, 99]]
753"""
754def g2060():
755def g2059():
756def g2058():
757def g2057():
758def g2051(a_1485):
759def g2052(b_1486):
760def g2053(c_1487):
761def g2054(d_1488):
762def g2056():
763return [a_1485,b_1486]
764def g2055():
765return [c_1487,d_1488]
766return [g2056(),g2055()]
767return g2054
768return g2053
769return g2052
770return g2051
771return g2057()(33)
772return g2058()(55)
773return g2059()(77)
774return g2060()(99)
775
776
777def g2075():
778"""
779>>> g2075()
780[[[3, [21, [18, []]]], [4, [28, [24, []]]]], [[[0, [0, [0, []]]], [1, [7, [6, []]]]], [[408, 408], []]]]
781"""
782a_1489 = 17
783def g2074():
784def g2064(x_1490):
785x1_1492 = (x_1490)+(1)
786x2_1491 = (x_1490)+(2)
787y1_1494 = (x1_1492)*(7)
788y2_1493 = (x2_1491)*(7)
789z1_1496 = (y1_1494)-(x1_1492)
790z2_1495 = (y2_1493)-(x2_1491)
791w1_1498 = (z1_1496)*(a_1489)
792w2_1497 = (z2_1495)*(a_1489)
793def g2073():
794def g2068(b_1500):
795if ((b_1500 == a_1489)):
796def g2072():
797def g2071():
798return [z1_1496,[]]
799return [y1_1494,g2071()]
800return [x1_1492,g2072()]
801else:
802def g2070():
803def g2069():
804return [z2_1495,[]]
805return [y2_1493,g2069()]
806return [x2_1491,g2070()]
807return g2068
808g_1502 = g2073()
809def g2067():
810def g2066(c_1499):
811if ((c_1499 == x_1490)):
812return w1_1498
813else:
814return w2_1497
815return g2066
816h_1501 = g2067()
817def g2065():
818if (((x_1490)*(x_1490) == (x_1490)+(x_1490))):
819return True
820else:
821return (x_1490 < 0)
822if (g2065()):
823return [g_1502(17),g_1502(16)]
824else:
825return [h_1501(x_1490),h_1501((x_1490)-(0))]
826return g2064
827f_1503 = g2074()
828def g2063():
829def g2062():
830return [f_1503(3),[]]
831return [f_1503(-1),g2062()]
832return [f_1503(2),g2063()]
833
834