diff --git a/crates/lang/src/builder.rs b/crates/lang/src/builder.rs index 8a7b2654..50c3bacd 100644 --- a/crates/lang/src/builder.rs +++ b/crates/lang/src/builder.rs @@ -1173,8 +1173,10 @@ pub fn monomorphize( } if let Type::Fn { args, .. } = &**full_type { - for arg in args { - get_variant_name(&mut new_name, arg); + if full_type.is_generic() { + for arg in args { + get_variant_name(&mut new_name, arg); + } } } diff --git a/crates/lang/src/uplc.rs b/crates/lang/src/uplc.rs index 9670184a..6a17ffc3 100644 --- a/crates/lang/src/uplc.rs +++ b/crates/lang/src/uplc.rs @@ -1576,7 +1576,7 @@ impl<'a> CodeGenerator<'a> { variant_name: function_access_key.variant_name.clone(), }); - for (index, ir) in func_comp.ir.clone().iter().enumerate() { + for (index, ir) in func_comp.ir.clone().iter().enumerate().rev() { match_ir_for_recursion( ir.clone(), &mut insert_var_vec, @@ -2182,7 +2182,7 @@ impl<'a> CodeGenerator<'a> { Term::Constant(UplcConstant::ProtoList(UplcType::Data, vec![])) }; - for arg in args { + for arg in args.into_iter().rev() { let list_item = if tipo.is_map() { arg } else { diff --git a/examples/acceptance_tests/015/lib/test.ak b/examples/acceptance_tests/015/lib/test.ak index bc5b08a7..8b7ea2d9 100644 --- a/examples/acceptance_tests/015/lib/test.ak +++ b/examples/acceptance_tests/015/lib/test.ak @@ -6,6 +6,7 @@ pub fn new() { Map { inner: [] } } +// Seems to be an issue with the parser. The TypedExpr body is excluding the Equal binop. test new_1() { new() == Map { inner: [] } }