From 4fa4f07fe2f5b79eb4458ff89d9b6e2d6bb60f08 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Tue, 3 Mar 2026 00:25:45 +0100 Subject: Begin work on recoverable parsing errors --- oryxc/src/compiler.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'oryxc/src/compiler.rs') diff --git a/oryxc/src/compiler.rs b/oryxc/src/compiler.rs index bca1ba6..d4010e0 100644 --- a/oryxc/src/compiler.rs +++ b/oryxc/src/compiler.rs @@ -150,12 +150,11 @@ fn worker_loop( if let Some(job) = job { match job { Job::LexAndParse { file } => { - let (name, buffer) = { + let buffer = { let fdata = state.files.get(&file).unwrap(); - (fdata.name.clone(), fdata.buffer.clone()) + fdata.buffer.clone() }; - let (name, buffer) = (name.as_ref(), buffer.as_ref()); - let tokens = match lexer::tokenize(buffer) { + let tokens = match lexer::tokenize(buffer.as_ref()) { Ok(xs) => xs, Err(e) => { emit_errors(state.clone(), file, vec![e]); @@ -170,7 +169,13 @@ fn worker_loop( } } - let (ast, _extra_data) = parser::parse(name, &tokens); + let (ast, _extra_data) = match parser::parse(&tokens) { + Ok((ast, _extra_data)) => (ast, _extra_data), + Err(errs) => { + emit_errors(state.clone(), file, errs); + process::exit(1); + }, + }; if state.flags.debug_parser { let mut handle = io::stderr().lock(); -- cgit v1.2.3