Fix symbol table sub_table desync for non-simple annotation targets (… · RustPython/RustPython@baba1f9 · GitHub
Skip to content

Commit baba1f9

Browse files
authored
Fix symbol table sub_table desync for non-simple annotation targets (#7300)
* Fix symbol table sub_table desync for non-simple annotation targets Non-simple annotations (subscript/attribute/parenthesized targets like `a[0]: expr`) were scanned in the annotation scope during symbol table analysis, creating sub_tables for any comprehensions. But codegen only compiles simple name annotations into __annotate__, so those sub_tables were never consumed. This caused subsequent simple annotations' comprehension sub_tables to get the wrong index, resulting in "the symbol 'X' must be present in the symbol table" errors. Fix: skip entering annotation scope for non-simple annotations since they are never compiled into __annotate__. * Validate forbidden expressions in non-simple annotation targets Fix cspell "desynchronize" warning and validate yield/await/named/async comprehension expressions in non-simple annotations without creating annotation scopes. * Restore in_annotation flag before propagating error
1 parent c315033 commit baba1f9

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

Lib/test/test_type_annotations.py

Lines changed: 0 additions & 1 deletion

crates/codegen/src/symboltable.rs

Lines changed: 21 additions & 1 deletion

0 commit comments

Comments
 (0)