Mark Shannon <m...@hotpy.org> added the comment:
Exammining the bytecode for: def finally_return(): try: return 14 finally: a.append(16) We have: 2 0 SETUP_FINALLY 16 (to 18) 3 2 POP_BLOCK 5 4 LOAD_GLOBAL 0 (a) 6 LOAD_METHOD 1 (append) 8 LOAD_CONST 1 (16) 10 CALL_METHOD 1 12 POP_TOP 3 14 LOAD_CONST 2 (14) 5 16 RETURN_VALUE >> 18 LOAD_GLOBAL 0 (a) 20 LOAD_METHOD 1 (append) 22 LOAD_CONST 1 (16) 24 CALL_METHOD 1 26 POP_TOP 28 RERAISE 30 LOAD_CONST 0 (None) 32 RETURN_VALUE Which looks correct, except for the line number of the first RETURN_VALUE. Looking at the compiler it seems that we aren't preserving the original line number when emitting code for the finally block. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue39114> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com