while if continue return sequence
Opened this issue · 0 comments
rocky commented
Decompiling bytecode for:
def test(a):
while True:
if a:
pass
else:
continue
return
gives:
:Traceback (most recent call last):
File "/src/external-vcs/github/uncompyle2/uncompyle2/__init__.py", line 203, in main
uncompyle_file(infile, outstream, showasm, showast)
File "/src/external-vcs/github/uncompyle2/uncompyle2/__init__.py", line 140, in uncompyle_file
uncompyle(version, co, outstream, showasm, showast)
File "/src/external-vcs/github/uncompyle2/uncompyle2/__init__.py", line 129, in uncompyle
raise walk.ERROR
ParserError: --- This code section failed: ---
0 SETUP_LOOP '26'
3 LOAD_GLOBAL 'True'
6 POP_JUMP_IF_FALSE '25'
9 LOAD_FAST 'a'
12 POP_JUMP_IF_FALSE '3'
15 JUMP_FORWARD '21'
18 CONTINUE '3'
21_0 COME_FROM '15'
21 LOAD_CONST None
24 RETURN_END_IF None
25 POP_BLOCK None
26_0 COME_FROM '0'
Syntax error at or near `POP_BLOCK' token at offset 25
That RETURN_END_IF
in fact is not the end of the if/else
which ends after the continue instruction on line 18.