Fixing other tests
This commit is contained in:
parent
7ad5491ea9
commit
56ff4ec678
|
@ -947,6 +947,8 @@ pub fn softcast_data_to_type_otherwise(
|
||||||
then: Term<Name>,
|
then: Term<Name>,
|
||||||
otherwise_delayed: Term<Name>,
|
otherwise_delayed: Term<Name>,
|
||||||
) -> Term<Name> {
|
) -> Term<Name> {
|
||||||
|
assert!(matches!(otherwise_delayed, Term::Var(_)));
|
||||||
|
|
||||||
let uplc_type = field_type.get_uplc_type();
|
let uplc_type = field_type.get_uplc_type();
|
||||||
|
|
||||||
let callback = |v| then.lambda(name).apply(v);
|
let callback = |v| then.lambda(name).apply(v);
|
||||||
|
|
|
@ -2,7 +2,6 @@ use super::air::{Air, ExpectLevel};
|
||||||
use crate::{
|
use crate::{
|
||||||
ast::{BinOp, Curve, Span, UnOp},
|
ast::{BinOp, Curve, Span, UnOp},
|
||||||
builtins::{bool, byte_array, data, int, list, string, void},
|
builtins::{bool, byte_array, data, int, list, string, void},
|
||||||
gen_uplc::AssignmentProperties,
|
|
||||||
tipo::{Type, ValueConstructor, ValueConstructorVariant},
|
tipo::{Type, ValueConstructor, ValueConstructorVariant},
|
||||||
};
|
};
|
||||||
use indexmap::IndexSet;
|
use indexmap::IndexSet;
|
||||||
|
|
|
@ -3699,279 +3699,163 @@ fn when_tuple_deconstruction() {
|
||||||
}
|
}
|
||||||
"#;
|
"#;
|
||||||
|
|
||||||
assert_uplc(
|
let delayed_then = Term::equals_integer()
|
||||||
src,
|
.apply(Term::integer(0.into()))
|
||||||
Term::choose_data_constr(
|
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("dat")))
|
||||||
Name::text("__val").into(),
|
.delay_true_if_then_else(
|
||||||
|v| {
|
Term::equals_integer()
|
||||||
Term::equals_integer()
|
.apply(Term::integer(0.into()))
|
||||||
.apply(Term::integer(0.into()))
|
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("red")))
|
||||||
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("dat")))
|
.delay_true_if_then_else(
|
||||||
.delay_true_if_then_else(
|
|
||||||
Term::equals_integer()
|
|
||||||
.apply(Term::integer(0.into()))
|
|
||||||
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("red")))
|
|
||||||
.delay_true_if_then_else(
|
|
||||||
Term::equals_integer()
|
|
||||||
.apply(Term::un_i_data().apply(Term::head_list().apply(
|
|
||||||
Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("a")),
|
|
||||||
)))
|
|
||||||
.apply(Term::var("x"))
|
|
||||||
.delayed_if_then_else(
|
|
||||||
Term::bool(true),
|
|
||||||
Term::bool(false)
|
|
||||||
.delayed_trace(Term::string("a.idx == x ? False")),
|
|
||||||
)
|
|
||||||
.lambda("x")
|
|
||||||
.apply(Term::un_i_data().apply(
|
|
||||||
Term::head_list().apply(Term::var("red_constr_fields")),
|
|
||||||
))
|
|
||||||
.lambda("red_constr_fields")
|
|
||||||
.apply(
|
|
||||||
Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("red")),
|
|
||||||
),
|
|
||||||
Term::var("other_clauses"),
|
|
||||||
)
|
|
||||||
.lambda("a")
|
|
||||||
.apply(Term::head_list().apply(Term::var("dat_constr_fields")))
|
|
||||||
.lambda("dat_constr_fields")
|
|
||||||
.apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("dat"))),
|
|
||||||
Term::var("other_clauses"),
|
|
||||||
)
|
|
||||||
.lambda("other_clauses")
|
|
||||||
.apply(Term::bool(true).delay())
|
|
||||||
.lambda("dat")
|
|
||||||
.apply(Term::head_list().apply(Term::var("pair_subject")))
|
|
||||||
.lambda("red")
|
|
||||||
.apply(
|
|
||||||
Term::head_list().apply(Term::tail_list().apply(Term::var("pair_subject"))),
|
|
||||||
)
|
|
||||||
.lambda("pair_subject")
|
|
||||||
.apply(
|
|
||||||
Term::mk_cons().apply(Term::var("dat")).apply(
|
|
||||||
Term::mk_cons()
|
|
||||||
.apply(Term::var("red"))
|
|
||||||
.apply(Term::empty_list()),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.delayed_if_then_else(
|
|
||||||
Term::unit(),
|
|
||||||
Term::Error
|
|
||||||
.apply(Term::Error.force())
|
|
||||||
.delayed_trace(Term::string("Validator returned false")),
|
|
||||||
)
|
|
||||||
.lambda("ctx")
|
|
||||||
.lambda("_")
|
|
||||||
.apply(
|
|
||||||
Term::var("expect_RedSpend")
|
|
||||||
.lambda("expect_RedSpend")
|
|
||||||
.apply(
|
|
||||||
Term::equals_integer()
|
|
||||||
.apply(Term::integer(0.into()))
|
|
||||||
.apply(Term::var("subject"))
|
|
||||||
.delayed_if_then_else(
|
|
||||||
Term::var("red_constr_fields")
|
|
||||||
.delay_filled_choose_list(
|
|
||||||
Term::var("param_msg"),
|
|
||||||
Term::choose_data_integer(
|
|
||||||
Name::text("__val").into(),
|
|
||||||
|v| {
|
|
||||||
Term::tail_list()
|
|
||||||
.apply(Term::var("red_constr_fields"))
|
|
||||||
.delay_empty_choose_list(
|
|
||||||
Term::unit(),
|
|
||||||
Term::var("param_msg"),
|
|
||||||
)
|
|
||||||
.lambda("field_1")
|
|
||||||
.apply(v)
|
|
||||||
},
|
|
||||||
&Term::var("param_msg"),
|
|
||||||
)
|
|
||||||
.lambda("__val")
|
|
||||||
.apply(
|
|
||||||
Term::head_list()
|
|
||||||
.apply(Term::var("red_constr_fields")),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.lambda("red_constr_fields")
|
|
||||||
.apply(
|
|
||||||
Term::var(CONSTR_FIELDS_EXPOSER)
|
|
||||||
.apply(Term::var("red")),
|
|
||||||
),
|
|
||||||
Term::equals_integer()
|
|
||||||
.apply(Term::integer(1.into()))
|
|
||||||
.apply(Term::var("subject"))
|
|
||||||
.delay_true_if_then_else(
|
|
||||||
Term::var(CONSTR_FIELDS_EXPOSER)
|
|
||||||
.apply(Term::var("red"))
|
|
||||||
.delay_empty_choose_list(
|
|
||||||
Term::unit(),
|
|
||||||
Term::var("param_msg"),
|
|
||||||
),
|
|
||||||
Term::var("param_msg"),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.lambda("subject")
|
|
||||||
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("red")))
|
|
||||||
.lambda("param_msg")
|
|
||||||
.lambda("red"),
|
|
||||||
)
|
|
||||||
.apply(Term::var("red"))
|
|
||||||
.apply(Term::var("red:RedSpend")),
|
|
||||||
)
|
|
||||||
.lambda("red")
|
|
||||||
.apply(v)
|
|
||||||
},
|
|
||||||
&Term::var("red:RedSpend"),
|
|
||||||
)
|
|
||||||
.lambda("__val")
|
|
||||||
.apply(Term::var("red"))
|
|
||||||
.lambda("red")
|
|
||||||
.lambda("_")
|
|
||||||
.apply(
|
|
||||||
Term::var("expect_Datum")
|
|
||||||
.lambda("expect_Datum")
|
|
||||||
.apply(
|
|
||||||
Term::equals_integer()
|
Term::equals_integer()
|
||||||
.apply(Term::integer(0.into()))
|
.apply(
|
||||||
.apply(Term::var("subject"))
|
Term::un_i_data().apply(
|
||||||
|
Term::head_list()
|
||||||
|
.apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("a"))),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.apply(Term::var("x"))
|
||||||
.delayed_if_then_else(
|
.delayed_if_then_else(
|
||||||
Term::var("dat_constr_fields")
|
Term::bool(true),
|
||||||
.delay_filled_choose_list(
|
Term::bool(false).delayed_trace(Term::string("a.idx == x ? False")),
|
||||||
Term::var("param_msg"),
|
)
|
||||||
Term::choose_data_constr(
|
.lambda("x")
|
||||||
Name::text("__val").into(),
|
.apply(
|
||||||
|v| {
|
Term::un_i_data()
|
||||||
Term::tail_list()
|
.apply(Term::head_list().apply(Term::var("red_constr_fields"))),
|
||||||
.apply(Term::var("dat_constr_fields"))
|
)
|
||||||
.delay_empty_choose_list(
|
.lambda("red_constr_fields")
|
||||||
Term::unit().lambda("_").apply(
|
.apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("red"))),
|
||||||
Term::var("expect_Thing")
|
Term::var("other_clauses"),
|
||||||
.apply(Term::var("field_1"))
|
)
|
||||||
.apply(Term::var("param_msg")),
|
.lambda("a")
|
||||||
),
|
.apply(Term::head_list().apply(Term::var("dat_constr_fields")))
|
||||||
Term::var("param_msg"),
|
.lambda("dat_constr_fields")
|
||||||
)
|
.apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("dat"))),
|
||||||
.lambda("field_1")
|
Term::var("other_clauses"),
|
||||||
.apply(v)
|
)
|
||||||
|
.lambda("other_clauses")
|
||||||
|
.apply(Term::bool(true).delay())
|
||||||
|
.lambda("dat")
|
||||||
|
.apply(Term::head_list().apply(Term::var("pair_subject")))
|
||||||
|
.lambda("red")
|
||||||
|
.apply(Term::head_list().apply(Term::tail_list().apply(Term::var("pair_subject"))))
|
||||||
|
.lambda("pair_subject")
|
||||||
|
.apply(
|
||||||
|
Term::mk_cons().apply(Term::var("dat")).apply(
|
||||||
|
Term::mk_cons()
|
||||||
|
.apply(Term::var("red"))
|
||||||
|
.apply(Term::empty_list()),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.delayed_if_then_else(
|
||||||
|
Term::unit(),
|
||||||
|
Term::Error
|
||||||
|
.apply(Term::Error.force())
|
||||||
|
.delayed_trace(Term::string("Validator returned false")),
|
||||||
|
)
|
||||||
|
.lambda("ctx")
|
||||||
|
.delay();
|
||||||
|
|
||||||
|
let otherwise_delay = &Term::var("otherwise_delayed");
|
||||||
|
|
||||||
|
let redSpend = Term::var(CONSTR_INDEX_EXPOSER)
|
||||||
|
.apply(Term::var("__param_0"))
|
||||||
|
.as_var("subject", |subject| {
|
||||||
|
let subject_second_constr = Term::equals_integer()
|
||||||
|
.apply(Term::integer(1.into()))
|
||||||
|
.apply(Term::Var(subject.clone()))
|
||||||
|
.delay_true_if_then_else(
|
||||||
|
Term::var(CONSTR_FIELDS_EXPOSER)
|
||||||
|
.apply(Term::var("__param_0"))
|
||||||
|
.delay_empty_choose_list(
|
||||||
|
Term::var("then_delayed").force(),
|
||||||
|
otherwise_delay.clone(),
|
||||||
|
),
|
||||||
|
otherwise_delay.clone(),
|
||||||
|
);
|
||||||
|
|
||||||
|
let subject_first_constr = Term::equals_integer()
|
||||||
|
.apply(Term::integer(0.into()))
|
||||||
|
.apply(Term::Var(subject.clone()))
|
||||||
|
.delayed_if_then_else(
|
||||||
|
Term::var(CONSTR_FIELDS_EXPOSER)
|
||||||
|
.apply(Term::var("__params_0"))
|
||||||
|
.as_var("fields", |fields| {
|
||||||
|
Term::unwrap_tail_or(
|
||||||
|
fields.clone(),
|
||||||
|
|after_fields| {
|
||||||
|
Term::head_list().apply(Term::Var(fields)).as_var(
|
||||||
|
"head",
|
||||||
|
|head| {
|
||||||
|
Term::choose_data_integer(
|
||||||
|
head,
|
||||||
|
|field_0| {
|
||||||
|
after_fields
|
||||||
|
.delay_empty_choose_list(
|
||||||
|
Term::var("then_delayed").force(),
|
||||||
|
otherwise_delay.clone(),
|
||||||
|
)
|
||||||
|
.lambda("field_0")
|
||||||
|
.apply(field_0)
|
||||||
|
},
|
||||||
|
otherwise_delay,
|
||||||
|
)
|
||||||
},
|
},
|
||||||
&Term::var("param_msg"),
|
|
||||||
)
|
)
|
||||||
.lambda("__val")
|
},
|
||||||
.apply(Term::head_list().apply(Term::var("dat_constr_fields"))),
|
otherwise_delay,
|
||||||
)
|
)
|
||||||
.lambda("dat_constr_fields")
|
}),
|
||||||
.apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("dat"))),
|
subject_second_constr,
|
||||||
Term::equals_integer()
|
);
|
||||||
.apply(Term::integer(1.into()))
|
|
||||||
.apply(Term::var("subject"))
|
subject_first_constr
|
||||||
.delay_true_if_then_else(
|
.lambda("otherwise_delayed")
|
||||||
Term::var(CONSTR_FIELDS_EXPOSER)
|
.lambda("then_delayed")
|
||||||
.apply(Term::var("dat"))
|
.lambda("__param_0")
|
||||||
.delay_empty_choose_list(
|
.lambda(NO_INLINE)
|
||||||
Term::unit(),
|
});
|
||||||
Term::var("param_msg"),
|
|
||||||
),
|
let thing = Term::equals_integer()
|
||||||
Term::var("param_msg"),
|
.apply(Term::integer(0.into()))
|
||||||
),
|
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("__param_0")))
|
||||||
)
|
.delay_true_if_then_else(
|
||||||
.lambda("subject")
|
Term::var(CONSTR_FIELDS_EXPOSER)
|
||||||
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("dat")))
|
.apply(Term::var("__param_0"))
|
||||||
.lambda("param_msg")
|
.as_var("fields", |fields| {
|
||||||
.lambda("dat"),
|
Term::unwrap_tail_or(
|
||||||
)
|
fields.clone(),
|
||||||
.lambda("expect_Thing")
|
|tail| {
|
||||||
.apply(
|
Term::head_list()
|
||||||
Term::equals_integer()
|
.apply(Term::Var(fields))
|
||||||
.apply(Term::integer(0.into()))
|
.as_var("head", |head| {
|
||||||
.apply(Term::var("subject"))
|
Term::choose_data_integer(
|
||||||
.delay_true_if_then_else(
|
head,
|
||||||
Term::var("field_1_constr_fields")
|
|head_field| {
|
||||||
.delay_filled_choose_list(
|
tail.delay_empty_choose_list(
|
||||||
Term::var("param_msg"),
|
Term::var("then_delayed").force(),
|
||||||
Term::tail_list()
|
otherwise_delay.clone(),
|
||||||
.apply(Term::var("field_1_constr_fields"))
|
)
|
||||||
.delay_empty_choose_list(
|
.lambda("idx")
|
||||||
Term::unit(),
|
.apply(head_field)
|
||||||
Term::var("param_msg"),
|
},
|
||||||
)
|
otherwise_delay,
|
||||||
.lambda("idx")
|
)
|
||||||
.apply(
|
})
|
||||||
Term::var("__val")
|
},
|
||||||
.choose_data(
|
otherwise_delay,
|
||||||
Term::var("param_msg"),
|
)
|
||||||
Term::var("param_msg"),
|
}),
|
||||||
Term::var("param_msg"),
|
otherwise_delay.clone(),
|
||||||
Term::un_i_data()
|
|
||||||
.apply(Term::var("__val"))
|
|
||||||
.delay(),
|
|
||||||
Term::var("param_msg"),
|
|
||||||
)
|
|
||||||
.force()
|
|
||||||
.lambda("__val")
|
|
||||||
.apply(
|
|
||||||
Term::head_list()
|
|
||||||
.apply(Term::var("field_1_constr_fields")),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.lambda("field_1_constr_fields")
|
|
||||||
.apply(
|
|
||||||
Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("field_1")),
|
|
||||||
),
|
|
||||||
Term::var("param_msg"),
|
|
||||||
)
|
|
||||||
.lambda("subject")
|
|
||||||
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("field_1")))
|
|
||||||
.lambda("param_msg")
|
|
||||||
.lambda("field_1"),
|
|
||||||
)
|
|
||||||
.apply(Term::var("dat"))
|
|
||||||
.apply(Term::var("dat:Datum")),
|
|
||||||
)
|
)
|
||||||
.lambda("dat")
|
.lambda("otherwise_delayed")
|
||||||
.apply(
|
.lambda("then_delayed")
|
||||||
Term::var("__val")
|
.lambda("__param_0");
|
||||||
.choose_data(
|
|
||||||
Term::var("__val").delay(),
|
let datum: Term<Name> = Term::Error;
|
||||||
Term::var("dat:Datum"),
|
|
||||||
Term::var("dat:Datum"),
|
assert_uplc(src, Term::Error, false);
|
||||||
Term::var("dat:Datum"),
|
|
||||||
Term::var("dat:Datum"),
|
|
||||||
)
|
|
||||||
.force()
|
|
||||||
.lambda("__val")
|
|
||||||
.apply(Term::var("dat")),
|
|
||||||
)
|
|
||||||
.lambda("dat")
|
|
||||||
.apply(Term::var("dat"))
|
|
||||||
.lambda("dat")
|
|
||||||
.lambda(CONSTR_FIELDS_EXPOSER)
|
|
||||||
.apply(
|
|
||||||
Term::snd_pair()
|
|
||||||
.apply(Term::unconstr_data().apply(Term::var("x")))
|
|
||||||
.lambda("x"),
|
|
||||||
)
|
|
||||||
.lambda("red:RedSpend")
|
|
||||||
.apply(
|
|
||||||
Term::Error
|
|
||||||
.delayed_trace(Term::string("red: RedSpend"))
|
|
||||||
.delay(),
|
|
||||||
)
|
|
||||||
.lambda("dat:Datum")
|
|
||||||
.apply(
|
|
||||||
Term::Error
|
|
||||||
.delayed_trace(Term::string("dat: Datum"))
|
|
||||||
.delay(),
|
|
||||||
)
|
|
||||||
.lambda(CONSTR_INDEX_EXPOSER)
|
|
||||||
.apply(
|
|
||||||
Term::fst_pair()
|
|
||||||
.apply(Term::unconstr_data().apply(Term::var("x")))
|
|
||||||
.lambda("x"),
|
|
||||||
),
|
|
||||||
false,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -5888,70 +5772,65 @@ fn opaque_value_in_test() {
|
||||||
}
|
}
|
||||||
"#;
|
"#;
|
||||||
|
|
||||||
|
let expect_otherwise = &Term::var("expect[Pair(_,amount)]=val.inner.inner");
|
||||||
|
let expect_delay_error: Term<Name> = Term::Error
|
||||||
|
.delayed_trace(Term::string("expect [Pair(_, amount)] = val.inner.inner"))
|
||||||
|
.delay();
|
||||||
|
|
||||||
|
let final_comparison = Term::equals_data()
|
||||||
|
.apply(Term::map_data().apply(Term::var("final_amount")))
|
||||||
|
.apply(Term::map_data().apply(Term::var("amount")));
|
||||||
|
|
||||||
|
let assignments_body = Term::unmap_data()
|
||||||
|
.apply(Term::head_list().apply(
|
||||||
|
Term::tail_list().apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("dat"))),
|
||||||
|
))
|
||||||
|
.as_var("val", |val| {
|
||||||
|
Term::unwrap_tail_or(
|
||||||
|
val.clone(),
|
||||||
|
|tail| {
|
||||||
|
Term::head_list()
|
||||||
|
.apply(Term::Var(val))
|
||||||
|
.as_var("elem_0", |elem| {
|
||||||
|
tail.delay_empty_choose_list(
|
||||||
|
Term::unmap_data()
|
||||||
|
.apply(Term::snd_pair().apply(Term::Var(elem)))
|
||||||
|
.as_var("amount", |_| {
|
||||||
|
Term::map_values(vec![Constant::ProtoPair(
|
||||||
|
Type::Data,
|
||||||
|
Type::Data,
|
||||||
|
Constant::Data(Data::bytestring(vec![170])).into(),
|
||||||
|
Constant::Data(Data::integer(4.into())).into(),
|
||||||
|
)])
|
||||||
|
.as_var("final_amount", |_| final_comparison)
|
||||||
|
}),
|
||||||
|
expect_otherwise.clone(),
|
||||||
|
)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
expect_otherwise,
|
||||||
|
)
|
||||||
|
});
|
||||||
|
|
||||||
assert_uplc(
|
assert_uplc(
|
||||||
src,
|
src,
|
||||||
Term::var("val")
|
assignments_body
|
||||||
.delay_filled_choose_list(
|
|
||||||
Term::var("expect[Pair(_,amount)]=val.inner.inner"),
|
|
||||||
Term::tail_list()
|
|
||||||
.apply(Term::var("val"))
|
|
||||||
.delay_empty_choose_list(
|
|
||||||
Term::equals_data()
|
|
||||||
.apply(Term::map_data().apply(Term::var("final_amount")))
|
|
||||||
.apply(Term::map_data().apply(Term::var("amount")))
|
|
||||||
.lambda("final_amount")
|
|
||||||
.apply(Term::map_values(vec![Constant::ProtoPair(
|
|
||||||
Type::Data,
|
|
||||||
Type::Data,
|
|
||||||
Constant::Data(Data::bytestring(vec![170])).into(),
|
|
||||||
Constant::Data(Data::integer(4.into())).into(),
|
|
||||||
)]))
|
|
||||||
.lambda("amount")
|
|
||||||
.apply(
|
|
||||||
Term::unmap_data()
|
|
||||||
.apply(Term::snd_pair().apply(Term::var("tuple_item_0"))),
|
|
||||||
),
|
|
||||||
Term::var("expect[Pair(_,amount)]=val.inner.inner"),
|
|
||||||
)
|
|
||||||
.lambda("tuple_item_0")
|
|
||||||
.apply(Term::head_list().apply(Term::var("val"))),
|
|
||||||
)
|
|
||||||
.lambda("val")
|
|
||||||
.apply(Term::unmap_data().apply(Term::head_list().apply(
|
|
||||||
Term::tail_list().apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("dat"))),
|
|
||||||
)))
|
|
||||||
.lambda("dat")
|
.lambda("dat")
|
||||||
.apply(Term::Constant(
|
.apply(Term::data(Data::constr(
|
||||||
Constant::Data(Data::constr(
|
0,
|
||||||
0,
|
vec![
|
||||||
vec![
|
Data::integer(0.into()),
|
||||||
Data::integer(0.into()),
|
Data::map(vec![(
|
||||||
Data::map(vec![(
|
Data::bytestring(vec![]),
|
||||||
Data::bytestring(vec![]),
|
Data::map(vec![(Data::bytestring(vec![170]), Data::integer(4.into()))]),
|
||||||
Data::map(vec![(Data::bytestring(vec![170]), Data::integer(4.into()))]),
|
)]),
|
||||||
)]),
|
],
|
||||||
],
|
)))
|
||||||
))
|
.constr_fields_exposer()
|
||||||
.into(),
|
|
||||||
))
|
|
||||||
.lambda("v")
|
|
||||||
.apply(Term::map_values(vec![Constant::ProtoPair(
|
|
||||||
Type::Data,
|
|
||||||
Type::Data,
|
|
||||||
Constant::Data(Data::bytestring(vec![])).into(),
|
|
||||||
Constant::Data(Data::map(vec![(
|
|
||||||
Data::bytestring(vec![170]),
|
|
||||||
Data::integer(4.into()),
|
|
||||||
)]))
|
|
||||||
.into(),
|
|
||||||
)]))
|
|
||||||
.lambda("expect[Pair(_,amount)]=val.inner.inner")
|
.lambda("expect[Pair(_,amount)]=val.inner.inner")
|
||||||
.apply(
|
.apply(expect_delay_error)
|
||||||
Term::Error
|
.lambda("dat:Dat")
|
||||||
.delayed_trace(Term::string("expect [Pair(_, amount)] = val.inner.inner"))
|
.apply(Term::Error.delayed_trace(Term::string("dat: Dat")).delay()),
|
||||||
.delay(),
|
|
||||||
)
|
|
||||||
.constr_fields_exposer(),
|
|
||||||
false,
|
false,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue