mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-29 03:04:38 +08:00
CPython convention: top-level module / interactive / expression code does not carry CO_NEWLOCALS or CO_OPTIMIZED. The per-scope mapping at enter_scope::CompilerScope::Module already returns empty flags, but Compiler::new seeded the root CodeInfo with CodeFlags::NEWLOCALS, forcing module code into the NEWLOCALS arm of frame.rs:725-731 so locals were allocated as a fresh empty dict instead of being bound to globals (the correct semantics for exec(code, globals)). Restore the seed to empty() so it matches the per-scope mapping and CPython's compiler_enter_scope for module scope.