diff options
Diffstat (limited to 'oryxc/src/compiler.rs')
| -rw-r--r-- | oryxc/src/compiler.rs | 15 |
1 files changed, 10 insertions, 5 deletions
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(); |