feat(Project::export): use Export::from_function and transpose

Co-authored-by: Kasey White <kwhitemsg@gmail.com>
This commit is contained in:
rvcas 2024-04-03 19:17:42 -04:00 committed by Lucas
parent 8ed930ac5a
commit dac3308620
1 changed files with 7 additions and 7 deletions

View File

@ -42,6 +42,7 @@ use aiken_lang::{
tipo::{Type, TypeInfo}, tipo::{Type, TypeInfo},
IdGenerator, IdGenerator,
}; };
use export::Export;
use indexmap::IndexMap; use indexmap::IndexMap;
use miette::NamedSource; use miette::NamedSource;
use options::{CodeGenMode, Options}; use options::{CodeGenMode, Options};
@ -465,22 +466,21 @@ where
}) })
} }
pub fn export(&self, module: &str, name: &str) -> Result<String, Error> { pub fn export(&self, module: &str, name: &str) -> Result<Export, Error> {
let mut generator = self.new_generator(Tracing::silent());
self.checked_modules self.checked_modules
.get(module) .get(module)
.and_then(|checked_module| { .and_then(|checked_module| {
checked_module.ast.definitions().find_map(|def| match def { checked_module.ast.definitions().find_map(|def| match def {
Definition::Fn(func) if func.name == name => Some(func), Definition::Fn(func) if func.name == name => Some((checked_module, func)),
_ => None, _ => None,
}) })
}) })
.map(|func| { .map(|(checked_module, func)| {
let program = generator.generate_raw(&func.body, &func.arguments, module); let mut generator = self.new_generator(Tracing::silent());
program.to_debruijn().unwrap().to_hex().unwrap() Export::from_function(func, checked_module, &mut generator, &self.checked_modules)
}) })
.transpose()?
.ok_or_else(|| Error::ExportNotFound { .ok_or_else(|| Error::ExportNotFound {
module: module.to_string(), module: module.to_string(),
name: name.to_string(), name: name.to_string(),