Work on error messages

Signed-off-by: Marcel Müller <neikos@neikos.email>
This commit is contained in:
Marcel Müller 2026-03-18 09:59:36 +01:00
parent 7f7bf5c98d
commit 42698bb219
13 changed files with 333 additions and 160 deletions

View file

@ -5,6 +5,7 @@ use std::path::Path;
use nomo::Context;
use nomo::functions::FunctionMap;
use nomo::input::NomoInput;
test_each_file::test_each_path! { for ["nomo"] in "./tests/cases/" as cases => check_for_input }
@ -43,16 +44,18 @@ fn check_for_input([path]: [&Path; 1]) {
context.try_insert(k, v).unwrap();
}
let parsed = nomo::lexer::parse(input.into()).unwrap();
let input = NomoInput::from(input);
let parsed = nomo::lexer::parse(input.clone()).unwrap();
let _guard = settings.bind_to_scope();
insta::assert_debug_snapshot!(format!("{basename}.1-parsed"), parsed);
let ast = match nomo::parser::parse(parsed.tokens()) {
let ast = match nomo::parser::parse(input, parsed.tokens()) {
Ok(ast) => ast,
Err(err) => {
eprintln!("{}", err.to_report(input));
eprintln!("{}", err);
panic!("Could not evaluate ast");
}
};
@ -97,7 +100,9 @@ fn check_errors([path]: [&Path; 1]) {
let _guard = settings.bind_to_scope();
let parsed = nomo::lexer::parse(input.into()).map_err(|err| err.to_report());
let input = NomoInput::from(input);
let parsed = nomo::lexer::parse(input.clone()).map_err(|err| err.to_report());
match &parsed {
Ok(parsed) => insta::assert_debug_snapshot!(format!("{basename}.1-parsed"), parsed),
@ -108,7 +113,7 @@ fn check_errors([path]: [&Path; 1]) {
return;
};
let ast = nomo::parser::parse(parsed.tokens()).map_err(|err| err.to_report(input));
let ast = nomo::parser::parse(input, parsed.tokens()).map_err(|err| err.to_string());
match &ast {
Ok(ast) => insta::assert_debug_snapshot!(format!("{basename}.2-ast"), ast),