Skip to content

_testinternalcapi.assemble_code_object doesn't construct the exception table #115796

Closed
@iritkatriel

Description

@iritkatriel

The code object returned from _testinternalcapi.assemble_code_object. doesn't have a code object:

from _testinternalcapi import compiler_codegen, optimize_cfg, assemble_code_object

metadata = {
    'filename' : 'exc.py',
    'name'     : 'exc',
    'consts'   : {2 : 0},
}   
            
# code for "try: pass\n except: pass"
insts = [
    ('RESUME', 0),
    ('SETUP_FINALLY', 3),
    ('RETURN_CONST', 0),
    ('SETUP_CLEANUP', 8),
    ('PUSH_EXC_INFO', 0),
    ('POP_TOP', 0),               
    ('POP_EXCEPT', 0),
    ('RETURN_CONST', 0),
    ('COPY', 3),
    ('POP_EXCEPT', 0),
    ('RERAISE', 1),
]

from test.test_compiler_assemble import IsolatedAssembleTests
metadata = IsolatedAssembleTests().complete_metadata(metadata)  
insts = IsolatedAssembleTests().complete_insts_info(insts) 
co = assemble_code_object(metadata['filename'], insts, metadata)
print(co.co_exceptiontable)

Output:

b''

Linked PRs

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions