cython
1# mode: run
2# ticket: t533
3# ticket: gh1093
4
5def for_in():
6"""
7>>> for_in()
8CONTINUE -1
9CONTINUE 4
10BREAK 6
116
12"""
13i = -1
14for L in [[], range(5), range(10)]:
15for i in L:
16if i > 5:
17break
18else:
19print "CONTINUE", i
20continue
21print "BREAK", i
22break
23return i
24
25
26def for_from():
27"""
28>>> for_from()
29CONTINUE 0
30CONTINUE 5
31BREAK 6
326
33"""
34i = -1
35for L in [[], range(5), range(10)]:
36for i from 0 <= i < len(L):
37if i > 5:
38break
39else:
40print "CONTINUE", i
41continue
42print "BREAK", i
43break
44return i
45
46
47def for_in_break2(data, avoid):
48"""
49>>> for_in_break2([1,2,3,None], avoid=[1,2,3])
503
51>>> for_in_break2([1,2,3,None], avoid=[1])
521
53>>> for_in_break2([1,2,3,None], avoid=[1])
541
55"""
56data_iter = iter(data)
57value = None
58while 1:
59match = next(data_iter)
60if match is None:
61break
62for value in avoid:
63if match == value:
64break
65else:
66break
67
68return value
69