checkpoint

This commit is contained in:
microproofs 2023-07-10 22:09:58 -04:00 committed by Kasey
parent fd83c9a739
commit 7d4e136467
1 changed files with 21 additions and 4 deletions

View File

@ -25,7 +25,7 @@ use crate::{
FunctionAccessKey, SpecificClause, FunctionAccessKey, SpecificClause,
}, },
}, },
gen_uplc2::builder::convert_opaque_type, gen_uplc2::builder::{convert_opaque_type, get_generic_id_and_type},
tipo::{ tipo::{
ModuleValueConstructor, PatternConstructor, Type, TypeInfo, ValueConstructor, ModuleValueConstructor, PatternConstructor, Type, TypeInfo, ValueConstructor,
ValueConstructorVariant, ValueConstructorVariant,
@ -1131,7 +1131,7 @@ impl<'a> CodeGenerator<'a> {
unreachable!("We need a data type definition fot type {:#?}", tipo) unreachable!("We need a data type definition fot type {:#?}", tipo)
}); });
let mut data_type_variant = tipo let data_type_variant = tipo
.get_inner_types() .get_inner_types()
.iter() .iter()
.map(|arg| get_arg_type_name(arg)) .map(|arg| get_arg_type_name(arg))
@ -1140,13 +1140,30 @@ impl<'a> CodeGenerator<'a> {
// TODO calculate the variant name. // TODO calculate the variant name.
let data_type_name = format!("__expect_{}_{}", data_type.name, data_type_variant); let data_type_name = format!("__expect_{}_{}", data_type.name, data_type_variant);
let function = self.code_gen_functions.get(&data_type_name); let function = self.code_gen_functions.get(&data_type_name);
todo!();
if function.is_none() && defined_data_types.get(&data_type_name).is_none() { if function.is_none() && defined_data_types.get(&data_type_name).is_none() {
defined_data_types.insert(data_type_name.clone(), 1);
let mono_types: IndexMap<u64, Arc<Type>> = if !data_type.typed_parameters.is_empty()
{
data_type
.typed_parameters
.iter()
.zip(tipo.arg_types().unwrap())
.flat_map(|item| get_generic_id_and_type(item.0, &item.1))
.collect()
} else {
vec![].into_iter().collect()
};
let current_defined_state = defined_data_types.clone();
// let mut diff_defined_types = IndexMap::new();
todo!() todo!()
} else if let Some(counter) = defined_data_types.get_mut(&data_type_name) { } else if let Some(counter) = defined_data_types.get_mut(&data_type_name) {
*counter += 1; *counter += 1;
} else { } else {
defined_data_types.insert(data_type_name.to_string(), 0); defined_data_types.insert(data_type_name.to_string(), 1);
} }
let func_var = AirTree::var( let func_var = AirTree::var(