Skip to content

Crash when converting NamedExpression AST #2343

@isidentical

Description

@isidentical
>>>>> import ast
>>>>> ast.parse("(a := b)")
thread 'main' panicked at 'module 'module' object has no class NamedExpression', vm/src/vm.rs:519:33
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:78
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:59
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1076
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1537
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:62
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:198
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:217
  10: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:526
  11: rust_begin_unwind
             at src/libstd/panicking.rs:437
  12: std::panicking::begin_panic_fmt
             at src/libstd/panicking.rs:391
  13: rustpython_vm::vm::VirtualMachine::class::{{closure}}
             at vm/src/vm.rs:519
  14: core::result::Result<T,E>::unwrap_or_else
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/result.rs:853
  15: rustpython_vm::vm::VirtualMachine::class
             at vm/src/vm.rs:517
  16: rustpython_vm::stdlib::ast::create_node
             at vm/src/stdlib/ast.rs:69
  17: rustpython_vm::stdlib::ast::expression_to_ast
             at vm/src/stdlib/ast.rs:520
  18: rustpython_vm::stdlib::ast::statement_to_ast
             at vm/src/stdlib/ast.rs:201
  19: rustpython_vm::stdlib::ast::statements_to_ast::{{closure}}
             at vm/src/stdlib/ast.rs:75
  20: core::iter::adapters::map_try_fold::{{closure}}
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/iter/adapters/mod.rs:840
  21: core::iter::traits::iterator::Iterator::try_fold
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/iter/traits/iterator.rs:1889
  22: <core::iter::adapters::Map<I,F> as core::iter::traits::iterator::Iterator>::try_fold
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/iter/adapters/mod.rs:866
  23: <core::iter::adapters::ResultShunt<I,E> as core::iter::traits::iterator::Iterator>::try_fold
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/iter/adapters/mod.rs:2636
  24: core::iter::traits::iterator::Iterator::find
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/iter/traits/iterator.rs:2231
  25: <core::iter::adapters::ResultShunt<I,E> as core::iter::traits::iterator::Iterator>::next
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/iter/adapters/mod.rs:2618
  26: <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/liballoc/vec.rs:2093
  27: <alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/liballoc/vec.rs:1995
  28: core::iter::traits::iterator::Iterator::collect
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/iter/traits/iterator.rs:1671
  29: <core::result::Result<V,E> as core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter::{{closure}}
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/result.rs:1565
  30: core::iter::adapters::process_results
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/iter/adapters/mod.rs:2607
  31: <core::result::Result<V,E> as core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/result.rs:1565
  32: core::iter::traits::iterator::Iterator::collect
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/iter/traits/iterator.rs:1671
  33: rustpython_vm::stdlib::ast::statements_to_ast
             at vm/src/stdlib/ast.rs:73
  34: rustpython_vm::stdlib::ast::top_to_ast
             at vm/src/stdlib/ast.rs:61
  35: rustpython_vm::stdlib::ast::parse
             at vm/src/stdlib/ast.rs:632
  36: rustpython_vm::builtins::make_module::decl::compile
  37: core::ops::function::Fn::call
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libcore/ops/function.rs:72
  38: rustpython_vm::function::<impl rustpython_vm::function::sealed::PyNativeFuncInternal<(rustpython_vm::function::OwnedParam<T1>,),R,rustpython_vm::vm::VirtualMachine> for F>::call_
             at vm/src/function.rs:608
  39: <F as rustpython_vm::function::IntoPyNativeFunc<(T,R,VM)>>::call
             at vm/src/function.rs:576
  40: rustpython_vm::function::IntoPyNativeFunc::into_func::{{closure}}
             at vm/src/function.rs:565
  41: <alloc::boxed::Box<F> as core::ops::function::Fn<A>>::call
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/liballoc/boxed.rs:1095
  42: <rustpython_vm::builtins::builtinfunc::PyBuiltinFunction as rustpython_vm::slots::Callable>::call
             at vm/src/builtins/builtinfunc.rs:116
  43: rustpython_vm::slots::Callable::tp_call
             at vm/src/slots.rs:116
  44: rustpython_vm::vm::VirtualMachine::_invoke
             at vm/src/vm.rs:954
  45: rustpython_vm::vm::VirtualMachine::invoke
             at vm/src/vm.rs:970
  46: rustpython_vm::frame::ExecutingFrame::execute_call_function
             at vm/src/frame.rs:1117
  47: rustpython_vm::frame::ExecutingFrame::execute_instruction
             at vm/src/frame.rs:626
  48: rustpython_vm::frame::ExecutingFrame::run
             at vm/src/frame.rs:261
  49: rustpython_vm::frame::<impl rustpython_vm::pyobjectrc::PyRef<rustpython_vm::frame::Frame>>::run::{{closure}}
             at vm/src/frame.rs:195
  50: rustpython_vm::frame::<impl rustpython_vm::pyobjectrc::PyRef<rustpython_vm::frame::Frame>>::with_exec
             at vm/src/frame.rs:190
  51: rustpython_vm::frame::<impl rustpython_vm::pyobjectrc::PyRef<rustpython_vm::frame::Frame>>::run
             at vm/src/frame.rs:195
  52: rustpython_vm::vm::VirtualMachine::run_frame::{{closure}}
             at vm/src/vm.rs:476
  53: rustpython_vm::vm::VirtualMachine::with_frame
             at vm/src/vm.rs:469
  54: rustpython_vm::vm::VirtualMachine::run_frame
             at vm/src/vm.rs:476
  55: rustpython_vm::vm::VirtualMachine::run_frame_full
             at vm/src/vm.rs:456
  56: rustpython_vm::builtins::function::PyFunction::invoke_with_scope
             at vm/src/builtins/function.rs:246
  57: rustpython_vm::builtins::function::PyFunction::invoke
             at vm/src/builtins/function.rs:251
  58: <rustpython_vm::builtins::function::PyFunction as rustpython_vm::slots::Callable>::call
             at vm/src/builtins/function.rs:314
  59: rustpython_vm::slots::Callable::tp_call
             at vm/src/slots.rs:116
  60: rustpython_vm::vm::VirtualMachine::_invoke
             at vm/src/vm.rs:954
  61: rustpython_vm::vm::VirtualMachine::invoke
             at vm/src/vm.rs:970
  62: rustpython_vm::frame::ExecutingFrame::execute_call_function
             at vm/src/frame.rs:1117
  63: rustpython_vm::frame::ExecutingFrame::execute_instruction
             at vm/src/frame.rs:626
  64: rustpython_vm::frame::ExecutingFrame::run
             at vm/src/frame.rs:261
  65: rustpython_vm::frame::<impl rustpython_vm::pyobjectrc::PyRef<rustpython_vm::frame::Frame>>::run::{{closure}}
             at vm/src/frame.rs:195
  66: rustpython_vm::frame::<impl rustpython_vm::pyobjectrc::PyRef<rustpython_vm::frame::Frame>>::with_exec
             at vm/src/frame.rs:190
  67: rustpython_vm::frame::<impl rustpython_vm::pyobjectrc::PyRef<rustpython_vm::frame::Frame>>::run
             at vm/src/frame.rs:195
  68: rustpython_vm::vm::VirtualMachine::run_frame::{{closure}}
             at vm/src/vm.rs:476
  69: rustpython_vm::vm::VirtualMachine::with_frame
             at vm/src/vm.rs:469
  70: rustpython_vm::vm::VirtualMachine::run_frame
             at vm/src/vm.rs:476
  71: rustpython_vm::vm::VirtualMachine::run_frame_full
             at vm/src/vm.rs:456
  72: rustpython_vm::vm::VirtualMachine::run_code_obj
             at vm/src/vm.rs:452
  73: rustpython::shell::shell_exec
             at src/shell.rs:21
  74: rustpython::shell::run_shell
             at src/shell.rs:89
  75: rustpython::run_rustpython
             at src/main.rs:485
  76: rustpython::main::{{closure}}
             at src/main.rs:57
  77: rustpython_vm::vm::Interpreter::enter::{{closure}}
             at ./vm/src/vm.rs:1758
  78: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libstd/panic.rs:318
  79: std::panicking::try::do_call
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libstd/panicking.rs:348
  80: __rust_try
  81: std::panicking::try
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libstd/panicking.rs:325
  82: std::panic::catch_unwind
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libstd/panic.rs:394
  83: rustpython_vm::vm::thread::enter_vm::{{closure}}
             at ./vm/src/vm.rs:79
  84: std::thread::local::LocalKey<T>::try_with
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libstd/thread/local.rs:263
  85: std::thread::local::LocalKey<T>::with
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libstd/thread/local.rs:239
  86: rustpython_vm::vm::thread::enter_vm
             at ./vm/src/vm.rs:77
  87: rustpython_vm::vm::Interpreter::enter
             at ./vm/src/vm.rs:1758
  88: rustpython::main
             at src/main.rs:56
  89: std::rt::lang_start::{{closure}}
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libstd/rt.rs:67
  90: std::rt::lang_start_internal::{{closure}}
             at src/libstd/rt.rs:52
  91: std::panicking::try::do_call
             at src/libstd/panicking.rs:348
  92: std::panicking::try
             at src/libstd/panicking.rs:325
  93: std::panic::catch_unwind
             at src/libstd/panic.rs:394
  94: std::rt::lang_start_internal
             at src/libstd/rt.rs:51
  95: std::rt::lang_start
             at /rustc/04488afe34512aa4c33566eb16d8c912a3ae04f9/src/libstd/rt.rs:67
  96: main
  97: __libc_start_main
  98: _start

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-compatA discrepancy between RustPython and CPython

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions