diff options
Diffstat (limited to 'chomp-macro/src/lib.rs')
-rw-r--r-- | chomp-macro/src/lib.rs | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/chomp-macro/src/lib.rs b/chomp-macro/src/lib.rs index d58bbdc..91e1527 100644 --- a/chomp-macro/src/lib.rs +++ b/chomp-macro/src/lib.rs @@ -1,33 +1,33 @@ use chomp::{ chomp::{ - check::{InlineCalls, TypeCheck}, - context::Context, + ast::substitute::InlineCalls, + typed::{ + context::Context, + lower::{Backend, GenerateCode}, + TypeInfer, + }, visit::Visitable, }, - lower::{rust::RustBackend, Backend, GenerateCode}, + lower::RustBackend, nibble::cst::File, }; -use proc_macro::{Span, TokenStream}; +use proc_macro::TokenStream; use syn::Error; #[proc_macro] pub fn nibble(item: TokenStream) -> TokenStream { syn::parse(item) - .and_then(|nibble: File| { - nibble - .convert() - .ok_or_else(|| todo!()) - }) + .and_then(|nibble: File| nibble.convert().map_err(Error::from)) .and_then(|(funs, goal)| { funs.into_iter() .try_rfold(goal, |goal, function| { - goal.fold(&mut InlineCalls::new(function)) + goal.fold(&mut InlineCalls { function }) }) .map_err(Error::from) }) .and_then(|expr| { let mut context = Context::default(); - expr.fold(&mut TypeCheck { + expr.fold(&mut TypeInfer { context: &mut context, }) .map_err(Error::from) @@ -35,7 +35,7 @@ pub fn nibble(item: TokenStream) -> TokenStream { .map(|typed| { let mut backend = RustBackend::default(); let id = typed.gen(&mut backend); - backend.emit_code(id) + backend.emit_code(None, None, id) }) .unwrap_or_else(Error::into_compile_error) .into() |