artiq/artiq/test/lit/integration/for.py
David Nadlinger 7dcc987dd7 compiler: Fix break/continue targets in loop else blocks
Previously, they would still target the respective labels in the
just-exited loop.

Signed-off-by: David Nadlinger <code@klickverbot.at>
2016-11-05 02:35:01 +00:00

54 lines
773 B
Python

# RUN: %python -m artiq.compiler.testbench.jit %s
# RUN: %python %s
count = 0
for x in range(10):
count += 1
assert count == 10
for x in range(10):
assert True
else:
assert True
for x in range(0):
assert False
else:
assert True
for x in range(10):
continue
assert False
else:
assert True
for x in range(10):
break
assert False
else:
assert False
# Verify continue target is reset in else block.
cond = False
while True:
if cond:
break
cond = True
for _ in range(1):
pass
else:
continue
assert False
else:
assert False
# Verify for target is reset in else block.
while True:
for _ in range(1):
pass
else:
break
assert False
else:
assert False