Add EvalAltResult::clear_position().

This commit is contained in:
Stephen Chung
2021-01-08 14:29:57 +08:00
parent ec18bd26a2
commit b96c832141
4 changed files with 13 additions and 9 deletions

View File

@@ -5,19 +5,17 @@ use rhai::OptimizationLevel;
use std::{env, fs::File, io::Read, process::exit};
fn eprint_error(input: &str, err: EvalAltResult) {
fn eprint_line(lines: &[&str], pos: Position, err: &str) {
fn eprint_error(input: &str, mut err: EvalAltResult) {
fn eprint_line(lines: &[&str], pos: Position, err_msg: &str) {
let line = pos.line().unwrap();
let line_no = format!("{}: ", line);
let pos_text = format!(" ({})", pos);
eprintln!("{}{}", line_no, lines[line - 1]);
eprintln!(
"{:>1$} {2}",
"^",
line_no.len() + pos.position().unwrap(),
err.replace(&pos_text, "")
err_msg
);
eprintln!("");
}
@@ -26,6 +24,7 @@ fn eprint_error(input: &str, err: EvalAltResult) {
// Print error
let pos = err.position();
err.clear_position();
if pos.is_none() {
// No position