diff --git a/crates/aiken-lang/src/gen_uplc.rs b/crates/aiken-lang/src/gen_uplc.rs index 95c684bb..728d42bc 100644 --- a/crates/aiken-lang/src/gen_uplc.rs +++ b/crates/aiken-lang/src/gen_uplc.rs @@ -1834,15 +1834,13 @@ impl<'a> CodeGenerator<'a> { .sorted_by(|item1, item2| item1.1.cmp(&item2.1)) .collect::>(); - let mut expect_stack = pattern_stack.empty_with_scope(); - let constr_name = format!("__{}_{}", constructor_name, self.id_gen.next()); + let mut expect_stack = pattern_stack.empty_with_scope(); + match assignment_properties.kind { AssignmentKind::Let => { - expect_stack.let_assignment(constr_name.clone(), value_stack); - - expect_stack.local_var(tipo.clone().into(), constr_name); + expect_stack.merge_child(value_stack); } AssignmentKind::Expect => { if tipo.is_bool() { @@ -1872,22 +1870,21 @@ impl<'a> CodeGenerator<'a> { expect_stack.local_var(tipo.clone().into(), constr_name); } - - if !arguments_index.is_empty() { - let indices = arguments_index - .iter() - .map(|(var_name, index)| { - let field_type = type_map.get(index).unwrap(); - (*index, var_name.clone(), field_type.clone()) - }) - .collect_vec(); - - pattern_stack.fields_expose(indices, false, expect_stack); - } else if !tipo.is_bool() { - pattern_stack.let_assignment("_", expect_stack); - } } } + if !arguments_index.is_empty() { + let indices = arguments_index + .iter() + .map(|(var_name, index)| { + let field_type = type_map.get(index).unwrap(); + (*index, var_name.clone(), field_type.clone()) + }) + .collect_vec(); + + pattern_stack.fields_expose(indices, false, expect_stack); + } else if !tipo.is_bool() { + pattern_stack.let_assignment("_", expect_stack); + } pattern_stack.merge_child(stacks); } diff --git a/examples/acceptance_tests/071/plutus.json b/examples/acceptance_tests/071/plutus.json index ea17eb5f..9762e8be 100644 --- a/examples/acceptance_tests/071/plutus.json +++ b/examples/acceptance_tests/071/plutus.json @@ -19,8 +19,8 @@ "$ref": "#/definitions/spend~1PoolRedeemer" } }, - "compiledCode": "5902fe010000323232323232323232323232323232222533300a3232323232323253330113370e9000000899251300f002153330113370e9001000899191919299980a99b87480080044c8c8cccc8888c8c8c8c8c9289813000980e19299980f99b8748000c078004400454cc08524012a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e0016330120070033024001301a32533301d3370e9000180e00088008a9980fa4812a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e00163300f005001300d48901ff0000e001010005301d001301300214a060260026601e60220149001180c8009807801099191919299980a99b87480080044c8c8cccc8888c8c8c8c8c9289813000980e19299980f99b8748000c078004400454cc0852412a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e0016330120070033024001301a32533301d3370e9000180e00088008a9980fa4812a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e00163300f005001300d48901ff0000e001010005301d001301300214a060260026601e60220149001180c80098078011807800998059806803a4000466e952000330153374a90011980a9ba90014bd701980a99ba5480092f5c097ae02233004375866016601a66016601a004900024008466ebccc030c038005200000222330033758660146018660146018004900024000466ebccc02cc034cc02cc034005200248000008c0040048894ccc0480084cdd2a400497ae013232533300f300300213374a90001980a80125eb804ccc01401400400cc05800cc050008526163001001222533300d00214984cc024c004c03c008ccc00c00cc040008004cc0040052000222233330073370e00200601c4666600a00a66e00011200230100010020022300737540024600a6ea80055cd2b9b5738aae7555cf2ab9f5740ae855d11", - "hash": "0ffbb7961d9eadaed5dce11d1b06289daa8e1837bb4c6580990385da" + "compiledCode": "5902fe010000323232323232323232323232323232222533300a3232323232323253330113370e9000000899251300f007153330113370e9001000899191919299980a99b87480080044c8c8cccc8888c8c8c8c8c9289813000980e19299980f99b8748000c078004400454cc08524012a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e0016330110070033024001301a32533301d3370e9000180e00088008a9980fa4812a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e00163300e005001300c48901ff0000e001010005301d001301300214a060260026601e60220149001180c8009807803899191919299980a99b87480080044c8c8cccc8888c8c8c8c8c9289813000980e19299980f99b8748000c078004400454cc0852412a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e0016330110070033024001301a32533301d3370e9000180e00088008a9980fa4812a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e00163300e005001300c48901ff0000e001010005301d001301300214a060260026601e60220149001180c80098078039807803119ba548000cc058cdd2a40046602c6ea40052f5c06602c66e9520024bd7025eb8088cc010dd6198061807198061807001240009002119baf3300d300f0014800000888cc00cdd6198059806998059806801240009000119baf3300c300e3300c300e0014800920000023001001222533301300213374a900125eb804c8c94ccc040c00c0084cdd2a40006602c00497ae013330050050010033017003301500233006300800248000526163001001222533300d00214984cc024c004c03c008ccc00c00cc040008004cc0040052000222233330073370e00200601c4666600a00a66e00011200230100010020022300737540024600a6ea80055cd2b9b5738aae7555cf2ab9f5740ae855d11", + "hash": "885413c04fac6a01e826d2ad6cce54ba6c59b3c8408096a1acea5968" } ], "definitions": {