Bug report
Bug description:
With the code from PR 122564, the destinations of branches into the blocks of certain cases are mapping to the pattern as well, making them look like they go out of scope:
v = 1
match v:
case 1:
x = 1
case 2:
x = 2
case 3:
x = 3
x += 2
This code yields (branches listing below extracted from co_branches()):
0 0 RESUME 0
1 2 LOAD_CONST 0 (1)
4 STORE_NAME 0 (v)
2 6 LOAD_NAME 0 (v)
3 8 COPY 1
10 LOAD_CONST 0 (1)
12 COMPARE_OP 88 (bool(==))
16 POP_JUMP_IF_FALSE 5 (to L1)
20 NOT_TAKEN
22 POP_TOP
4 24 LOAD_CONST 0 (1)
26 STORE_NAME 1 (x)
28 JUMP_FORWARD 19 (to L3)
5 L1: 30 COPY 1
32 LOAD_CONST 1 (2)
34 COMPARE_OP 88 (bool(==))
38 POP_JUMP_IF_FALSE 5 (to L2)
42 NOT_TAKEN
44 POP_TOP
6 46 LOAD_CONST 1 (2)
48 STORE_NAME 1 (x)
50 JUMP_FORWARD 8 (to L3)
7 L2: 52 LOAD_CONST 2 (3)
54 COMPARE_OP 88 (bool(==))
58 POP_JUMP_IF_FALSE 3 (to L3)
62 NOT_TAKEN
8 64 LOAD_CONST 2 (3)
66 STORE_NAME 1 (x)
9 L3: 68 LOAD_NAME 1 (x)
70 LOAD_CONST 1 (2)
72 BINARY_OP 13 (+=)
76 STORE_NAME 1 (x)
78 RETURN_CONST 3 (None)
'<module>' branches:
ex8.py 3:9-3:10 "1" (<module>@16) -> 3:9-3:10 "1" (<module>@22) [case -> out]
ex8.py 3:9-3:10 "1" (<module>@16) -> 5:9-5:10 "2" (<module>@30) [case -> next case]
ex8.py 5:9-5:10 "2" (<module>@38) -> 5:9-5:10 "2" (<module>@44) [case -> out]
ex8.py 5:9-5:10 "2" (<module>@38) -> 7:9-7:10 "3" (<module>@52) [case -> next case]
ex8.py 7:9-7:10 "3" (<module>@58) -> 8:12-8:13 "3" (<module>@64) [case -> body]
ex8.py 7:9-7:10 "3" (<module>@58) -> 9:0-9:1 "x" (<module>@68) [case -> next]
@markshannon @nedbat
CPython versions tested on:
CPython main branch
Operating systems tested on:
macOS
Linked PRs
Bug report
Bug description:
With the code from PR 122564, the destinations of branches into the blocks of certain
cases are mapping to the pattern as well, making them look like they go out of scope:This code yields (branches listing below extracted from
co_branches()):@markshannon @nedbat
CPython versions tested on:
CPython main branch
Operating systems tested on:
macOS
Linked PRs
POP_TOPafter a case test a location in the body, not the pattern. #130627