Fix unwrap issues
This commit is contained in:
@@ -5221,6 +5221,7 @@ fn expect_head3_cast_data_no_tail() {
|
||||
false,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn expect_head_cast_data_no_tail() {
|
||||
let src = r#"
|
||||
@@ -5309,131 +5310,143 @@ fn expect_head_cast_data_with_tail() {
|
||||
|
||||
assert_uplc(
|
||||
src,
|
||||
Term::var("unwrap_a")
|
||||
.choose_list(
|
||||
Term::var("__val")
|
||||
.choose_data(
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("tail_1")
|
||||
.choose_list(
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::equals_integer()
|
||||
.apply(Term::var("h"))
|
||||
.apply(Term::var("h"))
|
||||
.delayed_if_then_else(
|
||||
Term::equals_integer()
|
||||
.apply(Term::var("j"))
|
||||
.apply(Term::var("j")),
|
||||
Term::bool(false),
|
||||
)
|
||||
.lambda("_")
|
||||
.apply(
|
||||
Term::var("expect_on_list")
|
||||
.lambda("expect_on_list")
|
||||
.apply(
|
||||
Term::var("expect_on_list")
|
||||
.apply(Term::var("expect_on_list"))
|
||||
.apply(Term::var("list_to_check"))
|
||||
.lambda("expect_on_list")
|
||||
.apply(
|
||||
Term::var("list_to_check")
|
||||
.delayed_choose_list(
|
||||
Term::unit(),
|
||||
Term::var("expect_on_list")
|
||||
.apply(Term::var("expect_on_list"))
|
||||
.apply(
|
||||
Term::tail_list().apply(Term::var(
|
||||
"list_to_check",
|
||||
)),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::list_values(vec![
|
||||
Constant::Data(Data::integer(1.into())),
|
||||
Constant::Data(Data::integer(2.into())),
|
||||
Constant::Data(Data::integer(3.into())),
|
||||
])
|
||||
.choose_list(
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("__val")
|
||||
.choose_data(
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("tail_1")
|
||||
.choose_list(
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("__val")
|
||||
.choose_data(
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect_on_list")
|
||||
.apply(Term::tail_list().apply(Term::var("tail_2")))
|
||||
.apply(
|
||||
Term::var("__list")
|
||||
.choose_list(
|
||||
Term::equals_integer()
|
||||
.apply(Term::var("h"))
|
||||
.apply(Term::var("h"))
|
||||
.delayed_if_then_else(
|
||||
Term::equals_integer()
|
||||
.apply(Term::var("j"))
|
||||
.apply(Term::var("j")),
|
||||
Term::bool(false),
|
||||
),
|
||||
Term::var("__head").choose_data(
|
||||
Term::var(
|
||||
"expect[h,j,..]:List<Int>=a",
|
||||
),
|
||||
Term::var(
|
||||
"expect[h,j,..]:List<Int>=a",
|
||||
),
|
||||
Term::var(
|
||||
"expect[h,j,..]:List<Int>=a",
|
||||
),
|
||||
Term::var(
|
||||
"__curried_expect_on_list",
|
||||
)
|
||||
.apply(
|
||||
Term::tail_list()
|
||||
.apply(Term::var("__list")),
|
||||
)
|
||||
.lambda("_")
|
||||
.apply(
|
||||
Term::un_i_data()
|
||||
.apply(Term::var("__head")),
|
||||
),
|
||||
Term::var(
|
||||
"expect[h,j,..]:List<Int>=a",
|
||||
),
|
||||
)
|
||||
.lambda("_")
|
||||
.apply(Term::var("check_with").apply(
|
||||
Term::head_list().apply(Term::var(
|
||||
"list_to_check",
|
||||
)),
|
||||
)),
|
||||
)
|
||||
.lambda("list_to_check")
|
||||
.lambda("expect_on_list"),
|
||||
)
|
||||
.lambda("check_with")
|
||||
.lambda("list_to_check"),
|
||||
)
|
||||
.apply(Term::var("tail_2"))
|
||||
.apply(
|
||||
Term::var("__val")
|
||||
.choose_data(
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::un_i_data().apply(Term::var("__val")).delay(),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
)
|
||||
.force()
|
||||
.lambda("__val")
|
||||
.apply(Term::var("list_item"))
|
||||
.lambda("list_item"),
|
||||
),
|
||||
)
|
||||
.lambda("tail_2")
|
||||
.apply(Term::tail_list().apply(Term::var("tail_1")))
|
||||
.lambda("j")
|
||||
.apply(
|
||||
Term::var("__val")
|
||||
.choose_data(
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::un_i_data().apply(Term::var("__val")).delay(),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
)
|
||||
.force()
|
||||
.lambda("__val")
|
||||
.apply(Term::head_list().apply(Term::var("tail_1"))),
|
||||
)
|
||||
.delay(),
|
||||
)
|
||||
.force()
|
||||
.lambda("tail_1")
|
||||
.apply(Term::tail_list().apply(Term::var("unwrap_a")))
|
||||
.lambda("h")
|
||||
.apply(
|
||||
Term::var("__val")
|
||||
.choose_data(
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::un_i_data().apply(Term::var("__val")).delay(),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
)
|
||||
.force()
|
||||
.lambda("__val")
|
||||
.apply(Term::head_list().apply(Term::var("unwrap_a"))),
|
||||
)
|
||||
.delay(),
|
||||
)
|
||||
.force()
|
||||
.lambda("unwrap_a")
|
||||
.apply(
|
||||
Term::var("__val")
|
||||
.choose_data(
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::list_values(vec![
|
||||
.lambda("__head")
|
||||
.apply(Term::head_list().apply(Term::var("__list"))),
|
||||
)
|
||||
.lambda("__curried_expect_on_list")
|
||||
.lambda("__list"),
|
||||
)
|
||||
.lambda("expect_on_list")
|
||||
.apply(
|
||||
Term::var("expect_on_list")
|
||||
.apply(Term::var("expect_on_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("check_with")
|
||||
.lambda("__list"),
|
||||
)
|
||||
.lambda("j")
|
||||
.apply(
|
||||
Term::un_i_data()
|
||||
.apply(Term::var("__val"))
|
||||
.delay(),
|
||||
),
|
||||
Term::var("expect[h,j,..]:List<Int>=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()
|
||||
.lambda("tail_1")
|
||||
.apply(Term::tail_list().apply(Term::list_values(vec![
|
||||
Constant::Data(Data::integer(1.into())),
|
||||
Constant::Data(Data::integer(2.into())),
|
||||
Constant::Data(Data::integer(3.into())),
|
||||
])))
|
||||
.lambda("h")
|
||||
.apply(Term::un_i_data().apply(Term::var("__val")))
|
||||
.delay(),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
)
|
||||
.force()
|
||||
.lambda("__val")
|
||||
.apply(Term::head_list().apply(Term::list_values(vec![
|
||||
Constant::Data(Data::integer(1.into())),
|
||||
Constant::Data(Data::integer(2.into())),
|
||||
Constant::Data(Data::integer(3.into())),
|
||||
])
|
||||
.delay(),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
)
|
||||
.force()
|
||||
.lambda("__val")
|
||||
.apply(Term::data(Data::list(vec![
|
||||
Data::integer(1.into()),
|
||||
Data::integer(2.into()),
|
||||
Data::integer(3.into()),
|
||||
]))),
|
||||
]))),
|
||||
)
|
||||
.force()
|
||||
.delay(),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
Term::var("expect[h,j,..]:List<Int>=a"),
|
||||
)
|
||||
.force()
|
||||
.lambda("__val")
|
||||
.apply(Term::data(Data::list(vec![
|
||||
Data::integer(1.into()),
|
||||
Data::integer(2.into()),
|
||||
Data::integer(3.into()),
|
||||
])))
|
||||
.lambda("expect[h,j,..]:List<Int>=a")
|
||||
.apply(
|
||||
Term::Error
|
||||
|
||||
Reference in New Issue
Block a user