-
Notifications
You must be signed in to change notification settings - Fork 48
Range loop variable off-by-one step #1191
Copy link
Copy link
Closed
python/mypy
#21098Description
Repro:
# range_overshoot_bug.py
for i in range(3):
pass
print(f"i after range(3): {i}")
for j in range(0, 10, 3):
pass
print(f"j after range(0, 10, 3): {j}")
for k in range(5, 0, -1):
pass
print(f"k after range(5, 0, -1): {k}")# Python
❯ python3 range_overshoot_bug.py
i after range(3): 2
j after range(0, 10, 3): 9
k after range(5, 0, -1): 1
# Mypyc
❯ python3 -m mypyc range_overshoot_bug.py && python3 -c "import range_overshoot_bug"
i after range(3): 3
j after range(0, 10, 3): 12
k after range(5, 0, -1): 0Mypyc's ForRange.gen_step() seems to generate an additional step before checking if the exit condition is met.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels