Files
RustPython/vm/src/eval.rs
Daniel Watkins 767ceaefb5 Start storing the source_path of a code object
This will be required for (at least) import and exception display.
2018-08-25 19:45:19 -04:00

37 lines
942 B
Rust

extern crate rustpython_parser;
use super::compile;
use super::pyobject::{PyObjectRef, PyResult};
use super::vm::VirtualMachine;
pub fn eval(vm: &mut VirtualMachine, source: &String, scope: PyObjectRef) -> PyResult {
match compile::compile(vm, source, compile::Mode::Eval, None) {
Ok(bytecode) => {
debug!("Code object: {:?}", bytecode);
vm.run_code_obj(bytecode, scope)
}
Err(msg) => {
panic!("Parsing went horribly wrong: {}", msg);
}
}
}
#[cfg(test)]
mod tests {
use super::eval;
use super::VirtualMachine;
#[test]
fn test_print_42() {
let source = String::from("print('Hello world')\n");
let mut vm = VirtualMachine::new();
let vars = vm.context().new_scope(None);
let _result = eval(&mut vm, &source, vars);
// TODO: check result?
//assert_eq!(
// parse_ast,
// );
}
}