From 5b908aaeb7d3ab04832ace537aa1bd13886c7ed9 Mon Sep 17 00:00:00 2001 From: Kasey White Date: Sat, 17 Dec 2022 06:10:39 -0500 Subject: [PATCH] fix: fieldsexpose getting wrong generic id and not replacing type --- crates/lang/src/builder.rs | 3 +-- crates/lang/src/uplc.rs | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/crates/lang/src/builder.rs b/crates/lang/src/builder.rs index 0bd4dce0..aea04d75 100644 --- a/crates/lang/src/builder.rs +++ b/crates/lang/src/builder.rs @@ -1020,7 +1020,6 @@ pub fn monomorphize( needs_variant = false; } } - Air::BinOp { scope, name, @@ -1153,8 +1152,8 @@ pub fn monomorphize( let mut tipo = tipo.clone(); find_generics_to_replace(&mut tipo, &generic_types); needs_variant = false; + new_indices.push((ind, name, tipo)); } - new_indices.push((ind, name, tipo)); } new_air[index] = Air::FieldsExpose { scope, diff --git a/crates/lang/src/uplc.rs b/crates/lang/src/uplc.rs index 84cfd18c..f1ca1b94 100644 --- a/crates/lang/src/uplc.rs +++ b/crates/lang/src/uplc.rs @@ -922,9 +922,9 @@ impl<'a> CodeGenerator<'a> { let mut type_map: HashMap> = HashMap::new(); - for arg in &constructor_type.arguments { - let label = arg.label.clone().unwrap(); - let field_type = arg.tipo.clone(); + for (index, arg) in tipo.arg_types().unwrap().iter().enumerate() { + let label = constructor_type.arguments[index].label.clone().unwrap(); + let field_type = arg.clone(); type_map.insert(label, field_type); } @@ -1014,8 +1014,8 @@ impl<'a> CodeGenerator<'a> { } else { let mut type_map: HashMap> = HashMap::new(); - for (index, arg) in constructor_type.arguments.iter().enumerate() { - let field_type = arg.tipo.clone(); + for (index, arg) in tipo.arg_types().unwrap().iter().enumerate() { + let field_type = arg.clone(); type_map.insert(index, field_type); } @@ -1265,9 +1265,9 @@ impl<'a> CodeGenerator<'a> { let mut type_map: HashMap> = HashMap::new(); - for arg in &constructor_type.arguments { - let label = arg.label.clone().unwrap(); - let field_type = arg.tipo.clone(); + for (index, arg) in tipo.arg_types().unwrap().iter().enumerate() { + let label = constructor_type.arguments[index].label.clone().unwrap(); + let field_type = arg.clone(); type_map.insert(label, field_type); } @@ -1333,8 +1333,8 @@ impl<'a> CodeGenerator<'a> { } else { let mut type_map: HashMap> = HashMap::new(); - for (index, arg) in constructor_type.arguments.iter().enumerate() { - let field_type = arg.tipo.clone(); + for (index, arg) in tipo.arg_types().unwrap().iter().enumerate() { + let field_type = arg.clone(); type_map.insert(index, field_type); }