1# This tests that recursion with iternext doesn't lead to segfault.
2try:
3    enumerate
4    filter
5    map
6    max
7    zip
8except:
9    print("SKIP")
10    raise SystemExit
11
12# We need to pick an N that is large enough to hit the recursion
13# limit, but not too large that we run out of heap memory.
14try:
15    # large stack/heap, eg unix
16    [0] * 80000
17    N = 5000
18except:
19    try:
20        # medium, eg pyboard
21        [0] * 10000
22        N = 1000
23    except:
24        # small, eg esp8266
25        N = 100
26
27try:
28    x = (1, 2)
29    for i in range(N):
30        x = enumerate(x)
31    tuple(x)
32except RuntimeError:
33    print("RuntimeError")
34
35try:
36    x = (1, 2)
37    for i in range(N):
38        x = filter(None, x)
39    tuple(x)
40except RuntimeError:
41    print("RuntimeError")
42
43try:
44    x = (1, 2)
45    for i in range(N):
46        x = map(max, x, ())
47    tuple(x)
48except RuntimeError:
49    print("RuntimeError")
50
51try:
52    x = (1, 2)
53    for i in range(N):
54        x = zip(x)
55    tuple(x)
56except RuntimeError:
57    print("RuntimeError")
58