From 7def93878146167517588f225fbddaa7017fe7a6 Mon Sep 17 00:00:00 2001 From: Adam Wick Date: Fri, 2 Feb 2024 10:36:28 -0800 Subject: [PATCH] tests all pass --- src/backend/eval.rs | 40 ++-------------------------------------- 1 file changed, 2 insertions(+), 38 deletions(-) diff --git a/src/backend/eval.rs b/src/backend/eval.rs index 3c639b1..f1c3810 100644 --- a/src/backend/eval.rs +++ b/src/backend/eval.rs @@ -1,12 +1,10 @@ use crate::backend::Backend; use crate::eval::EvalError; -use crate::ir::{Expression, Program, TopLevel, Type}; -use crate::syntax::Location; +use crate::ir::{Expression, Program, Type}; use cranelift_jit::JITModule; use cranelift_object::ObjectModule; #[cfg(test)] use proptest::arbitrary::Arbitrary; -use std::collections::HashMap; use std::path::Path; use target_lexicon::Triple; @@ -56,45 +54,11 @@ impl Backend { //let allocator = Arena::<()>::new(); //program.pretty(&allocator).render(80, &mut std::io::stdout())?; let mut backend = Self::object_file(Triple::host())?; - let mut function_map = HashMap::new(); - let mut main_function_body = vec![]; - - for item in program.items { - match item { - TopLevel::Function(name, args, rettype, body) => { - let function_id = backend.compile_function( - &mut HashMap::new(), - name.as_str(), - args.as_slice(), - rettype, - body, - )?; - function_map.insert(name, function_id); - } - - TopLevel::Statement(stmt) => { - main_function_body.push(stmt); - } - } - } - - let main_function_body = Expression::Block( - Location::manufactured(), - Type::Primitive(crate::eval::PrimitiveType::Void), - main_function_body, - ); - let my_directory = tempfile::tempdir()?; let object_path = my_directory.path().join("object.o"); let executable_path = my_directory.path().join("test_executable"); - backend.compile_function( - &mut HashMap::new(), - "gogogo", - &[], - Type::Primitive(crate::eval::PrimitiveType::Void), - main_function_body, - )?; + backend.compile_program("gogogo", program)?; let bytes = backend.bytes()?; std::fs::write(&object_path, bytes)?; Self::link(&object_path, &executable_path)?;