Better error handling in REPL

We have much better spanned expression support, so now we get to show
it off!
This commit is contained in:
Alex Bethel 2021-06-07 20:08:38 -05:00
parent bdb32c4599
commit 39c5709db7

View file

@ -15,13 +15,12 @@ pub fn repl() {
break;
}
let mut parser = Parser::new(&line);
let ast = parser.init();
match ast {
Ok(ast) => {
println!("{:?}", ast);
println!("{:?}", env.eval_stmts(&ast));
}
Err(e) => {
let value = parser.init().and_then(|ast| {
println!("{:?}", &ast);
env.eval_stmts(&ast)
});
if let Err(e) = value {
println!(
"Error `{:?}` occurred at span: {:?} = `{:?}`",
e.kind,
@ -37,7 +36,6 @@ pub fn repl() {
);
}
}
}
Err(rustyline::error::ReadlineError::Eof) => {
println!("bye");
break;