From d23a5b2f11e4baf229719e0b590e2aae9c377d32 Mon Sep 17 00:00:00 2001 From: microproofs Date: Thu, 1 Aug 2024 13:10:13 -0400 Subject: [PATCH] Fix test for expect_head_cast_data_with_tail --- crates/aiken-lang/src/gen_uplc.rs | 62 +++++++++++++--------- crates/aiken-project/src/tests/gen_uplc.rs | 28 ++++++---- 2 files changed, 53 insertions(+), 37 deletions(-) diff --git a/crates/aiken-lang/src/gen_uplc.rs b/crates/aiken-lang/src/gen_uplc.rs index 417d6e50..542b7823 100644 --- a/crates/aiken-lang/src/gen_uplc.rs +++ b/crates/aiken-lang/src/gen_uplc.rs @@ -1798,35 +1798,45 @@ impl<'a> CodeGenerator<'a> { AirTree::list_empty( AirTree::local_var("__list", tipo.clone()), then, - AirTree::let_assignment( - &item_name, - AirTree::builtin( - DefaultFunction::HeadList, - data(), - vec![AirTree::local_var("__list", tipo.clone())], - ), - AirTree::soft_cast_assignment( + AirTree::anon_func( + vec![], + AirTree::let_assignment( &item_name, - inner_list_type.clone(), - AirTree::local_var(&item_name, data()), - self.expect_type_assign( - inner_list_type, - AirTree::local_var(&item_name, inner_list_type.clone()), - defined_data_types, - location, - AirTree::call( - AirTree::local_var("__curried_expect_on_list", void()), - void(), - vec![AirTree::builtin( - DefaultFunction::TailList, - list(data()), - vec![AirTree::local_var("__list", tipo.clone())], - )], - ), - otherwise.clone(), + AirTree::builtin( + DefaultFunction::HeadList, + data(), + vec![AirTree::local_var("__list", tipo.clone())], + ), + AirTree::soft_cast_assignment( + &item_name, + inner_list_type.clone(), + AirTree::local_var(&item_name, data()), + self.expect_type_assign( + inner_list_type, + AirTree::local_var(&item_name, inner_list_type.clone()), + defined_data_types, + location, + AirTree::call( + AirTree::local_var( + "__curried_expect_on_list", + void(), + ), + void(), + vec![AirTree::builtin( + DefaultFunction::TailList, + list(data()), + vec![AirTree::local_var( + "__list", + tipo.clone(), + )], + )], + ), + otherwise.clone(), + ), + otherwise, ), - otherwise, ), + true, ), ), false, diff --git a/crates/aiken-project/src/tests/gen_uplc.rs b/crates/aiken-project/src/tests/gen_uplc.rs index 40568fe0..6fc14e1c 100644 --- a/crates/aiken-project/src/tests/gen_uplc.rs +++ b/crates/aiken-project/src/tests/gen_uplc.rs @@ -5318,16 +5318,19 @@ fn expect_head_cast_data_with_tail() { "#; let expect_on_list = Term::var("expect_on_list") .apply(Term::var("expect_on_list")) + .apply(Term::var("__list")) .lambda("expect_on_list") .apply( Term::var("check_with") .apply(Term::var("__list")) .apply(Term::var("expect_on_list").apply(Term::var("expect_on_list"))) .lambda("__list") - .lambda("expect_on_list"), + .lambda("expect_on_list") + .lambda("__no_inline__"), ) .lambda("check_with") - .lambda("__list"); + .lambda("__list") + .lambda("__no_inline__"); let values = Term::list_values(vec![ Constant::Data(Data::integer(1.into())), @@ -5346,7 +5349,7 @@ fn expect_head_cast_data_with_tail() { ); let check_with = Term::var("__list") - .choose_list( + .delayed_choose_list( then, Term::var("__head") .choose_data( @@ -5356,14 +5359,17 @@ fn expect_head_cast_data_with_tail() { Term::var("__curried_expect_on_list") .apply(Term::tail_list().apply(Term::var("__list"))) .lambda("_") - .apply(Term::un_i_data().apply(Term::var("__head"))), + .apply(Term::un_i_data().apply(Term::var("__head"))) + .delay(), Term::var("expect[h,j,..]:List=a"), ) + .force() .lambda("__head") .apply(Term::head_list().apply(Term::var("__list"))), ) .lambda("__curried_expect_on_list") - .lambda("__list"); + .lambda("__list") + .lambda("__no_inline__"); let on_list = values .clone() @@ -5383,19 +5389,18 @@ fn expect_head_cast_data_with_tail() { Term::var("expect[h,j,..]:List=a"), Term::var("expect[h,j,..]:List=a"), Term::var("expect_on_list") - .apply(Term::tail_list().apply(Term::var("tail_2"))) - .apply(check_with) .lambda("expect_on_list") .apply(expect_on_list) + .apply(Term::tail_list().apply(Term::var("tail_1"))) + .apply(check_with) .lambda("j") - .apply(Term::un_i_data().apply(Term::var("__val")).delay()), + .apply(Term::un_i_data().apply(Term::var("__val"))) + .delay(), Term::var("expect[h,j,..]:List=a"), ) .force() .lambda("__val") .apply(Term::head_list().apply(Term::var("tail_1"))) - .lambda("tail_2") - .apply(Term::tail_list().apply(Term::var("tail_1"))) .delay(), ) .force() @@ -5408,7 +5413,8 @@ fn expect_head_cast_data_with_tail() { ) .force() .lambda("__val") - .apply(Term::head_list().apply(values)), + .apply(Term::head_list().apply(values)) + .delay(), ) .force() .delay();