// use crate::process::{LErr, Trace}; use crate::validator::VErr; // pub fn report_panic(err: LErr) { // let mut srcs = HashSet::new(); // let mut stack = vec![]; // let mut order = 1; // for entry in err.trace.iter().rev() { // let Trace { // callee, // caller, // function, // arguments, // input, // src, // } = entry; // let (_, first_span) = callee; // let (_, second_span) = caller; // let Value::Fn(f) = function else { // unreachable!() // }; // let fn_name = f.borrow().name.clone(); // let i = first_span.start; // let j = second_span.end; // let label = Label::new((entry.input, i..j)) // .with_color(Color::Yellow) // .with_message(format!("({order}) calling `{fn_name}` with `{arguments}`")); // order += 1; // stack.push(label); // srcs.insert((*input, *src)); // } // Report::build(ReportKind::Error, (err.input, err.span.into_range())) // .with_message(format!("Ludus panicked! {}", err.msg)) // .with_label(Label::new((err.input, err.span.into_range())).with_color(Color::Red)) // .with_labels(stack) // .with_note(err.extra) // .finish() // .print(sources(srcs.iter().copied())) // .unwrap(); // } pub fn report_invalidation(errs: Vec) { for err in errs { // Report::build(ReportKind::Error, (err.input, err.span.into_range())) // .with_message(err.msg.to_string()) // .with_label(Label::new((err.input, err.span.into_range())).with_color(Color::Cyan)) // .finish() // .print(sources(vec![(err.input, err.src)])) // .unwrap(); println!("{}", err.msg); } }