Closed
Description
def f(x):
match x:
case a,b:
return 1
import dis
from pprint import pprint as pp
def pos(p):
return (p.lineno, p.end_lineno, p.col_offset, p.end_col_offset)
pp([(pos(x.positions), x.opname, x.argval) for x in dis.get_instructions(f)])
Output is:
[((2, 2, 0, 0), 'RESUME', 0),
((3, 3, 8, 9), 'LOAD_FAST', 'x'),
((4, 4, 9, 12), 'MATCH_SEQUENCE', None),
((4, 4, 9, 12), 'POP_JUMP_IF_FALSE', 32),
((4, 4, 9, 12), 'GET_LEN', None),
((4, 4, 9, 12), 'LOAD_CONST', 2),
((4, 4, 9, 12), 'COMPARE_OP', '=='),
((4, 4, 9, 12), 'POP_JUMP_IF_FALSE', 32),
((4, 4, 9, 12), 'UNPACK_SEQUENCE', 2),
((4, 4, 11, 12), 'STORE_FAST', 'a'), <-- incorrect
((4, 4, 11, 12), 'STORE_FAST', 'b'),
((5, 5, 15, 16), 'LOAD_CONST', 1),
((5, 5, 15, 16), 'RETURN_VALUE', None),
((4, 4, 9, 12), 'POP_TOP', None),
((4, 4, 9, 12), 'LOAD_CONST', None),
((4, 4, 9, 12), 'RETURN_VALUE', None)]