chore: rename uplc builder builtins

This commit is contained in:
microproofs 2023-10-17 12:29:38 -04:00 committed by Kasey
parent 3e283a59ec
commit 4dd17dacf3
6 changed files with 226 additions and 196 deletions

View File

@ -3842,7 +3842,7 @@ impl<'a> CodeGenerator<'a> {
if !names_empty { if !names_empty {
let error_term = if self.tracing { let error_term = if self.tracing {
Term::Error.trace(Term::var( Term::Error.delayed_trace(Term::var(
self.special_functions.use_function(TOO_MANY_ITEMS), self.special_functions.use_function(TOO_MANY_ITEMS),
)) ))
} else { } else {
@ -3864,7 +3864,7 @@ impl<'a> CodeGenerator<'a> {
arg_stack.push(term); arg_stack.push(term);
} else if check_last_item { } else if check_last_item {
let trace_term = if self.tracing { let trace_term = if self.tracing {
Term::Error.trace(Term::var( Term::Error.delayed_trace(Term::var(
self.special_functions.use_function(LIST_NOT_EMPTY), self.special_functions.use_function(LIST_NOT_EMPTY),
)) ))
} else { } else {
@ -4050,13 +4050,13 @@ impl<'a> CodeGenerator<'a> {
let term = let term =
match name { match name {
BinOp::And => left.delayed_if_else(right, Term::bool(false)), BinOp::And => left.delayed_if_then_else(right, Term::bool(false)),
BinOp::Or => left.delayed_if_else(Term::bool(true), right), BinOp::Or => left.delayed_if_then_else(Term::bool(true), right),
BinOp::Eq => { BinOp::Eq => {
if tipo.is_bool() { if tipo.is_bool() {
let term = left.delayed_if_else( let term = left.delayed_if_then_else(
right.clone(), right.clone(),
right.if_else(Term::bool(false), Term::bool(true)), right.if_then_else(Term::bool(false), Term::bool(true)),
); );
arg_stack.push(term); arg_stack.push(term);
@ -4098,8 +4098,10 @@ impl<'a> CodeGenerator<'a> {
} }
BinOp::NotEq => { BinOp::NotEq => {
if tipo.is_bool() { if tipo.is_bool() {
let term = left.delayed_if_else( let term = left.delayed_if_then_else(
right.clone().if_else(Term::bool(false), Term::bool(true)), right
.clone()
.if_then_else(Term::bool(false), Term::bool(true)),
right, right,
); );
@ -4109,7 +4111,7 @@ impl<'a> CodeGenerator<'a> {
let term = builtin let term = builtin
.apply(Term::map_data().apply(left)) .apply(Term::map_data().apply(left))
.apply(Term::map_data().apply(right)) .apply(Term::map_data().apply(right))
.if_else(Term::bool(false), Term::bool(true)); .if_then_else(Term::bool(false), Term::bool(true));
arg_stack.push(term); arg_stack.push(term);
return; return;
@ -4123,7 +4125,7 @@ impl<'a> CodeGenerator<'a> {
.apply(Term::map_data().apply( .apply(Term::map_data().apply(
Term::mk_cons().apply(right).apply(Term::empty_map()), Term::mk_cons().apply(right).apply(Term::empty_map()),
)) ))
.if_else(Term::bool(false), Term::bool(true)); .if_then_else(Term::bool(false), Term::bool(true));
arg_stack.push(term); arg_stack.push(term);
return; return;
@ -4131,7 +4133,7 @@ impl<'a> CodeGenerator<'a> {
let term = builtin let term = builtin
.apply(Term::list_data().apply(left)) .apply(Term::list_data().apply(left))
.apply(Term::list_data().apply(right)) .apply(Term::list_data().apply(right))
.if_else(Term::bool(false), Term::bool(true)); .if_then_else(Term::bool(false), Term::bool(true));
arg_stack.push(term); arg_stack.push(term);
return; return;
@ -4143,7 +4145,7 @@ impl<'a> CodeGenerator<'a> {
builtin builtin
.apply(left) .apply(left)
.apply(right) .apply(right)
.if_else(Term::bool(false), Term::bool(true)) .if_then_else(Term::bool(false), Term::bool(true))
} }
BinOp::LtInt => Term::Builtin(DefaultFunction::LessThanInteger) BinOp::LtInt => Term::Builtin(DefaultFunction::LessThanInteger)
.apply(left) .apply(left)
@ -4351,7 +4353,7 @@ impl<'a> CodeGenerator<'a> {
let mut term = arg_stack.pop().unwrap(); let mut term = arg_stack.pop().unwrap();
let trace_term = if self.tracing { let trace_term = if self.tracing {
Term::Error.trace(Term::var( Term::Error.delayed_trace(Term::var(
self.special_functions.use_function(INCORRECT_CONSTR), self.special_functions.use_function(INCORRECT_CONSTR),
)) ))
} else { } else {
@ -4364,7 +4366,7 @@ impl<'a> CodeGenerator<'a> {
Term::var(self.special_functions.use_function(CONSTR_INDEX_EXPOSER)) Term::var(self.special_functions.use_function(CONSTR_INDEX_EXPOSER))
.apply(constr), .apply(constr),
) )
.delayed_if_else(term, trace_term); .delayed_if_then_else(term, trace_term);
arg_stack.push(term); arg_stack.push(term);
} }
@ -4373,7 +4375,7 @@ impl<'a> CodeGenerator<'a> {
let mut term = arg_stack.pop().unwrap(); let mut term = arg_stack.pop().unwrap();
let trace_term = if self.tracing { let trace_term = if self.tracing {
Term::Error.trace(Term::var( Term::Error.delayed_trace(Term::var(
self.special_functions.use_function(INCORRECT_BOOLEAN), self.special_functions.use_function(INCORRECT_BOOLEAN),
)) ))
} else { } else {
@ -4381,9 +4383,9 @@ impl<'a> CodeGenerator<'a> {
}; };
if is_true { if is_true {
term = value.delayed_if_else(term, trace_term) term = value.delayed_if_then_else(term, trace_term)
} else { } else {
term = value.delayed_if_else(trace_term, term) term = value.delayed_if_then_else(trace_term, term)
} }
arg_stack.push(term); arg_stack.push(term);
} }
@ -4438,11 +4440,11 @@ impl<'a> CodeGenerator<'a> {
if matches!(clause, Term::Constant(boolean) if matches!(boolean.as_ref(), UplcConstant::Bool(true))) if matches!(clause, Term::Constant(boolean) if matches!(boolean.as_ref(), UplcConstant::Bool(true)))
{ {
body = Term::var(subject_name) body = Term::var(subject_name)
.if_else(body.delay(), other_clauses) .if_then_else(body.delay(), other_clauses)
.force(); .force();
} else { } else {
body = Term::var(subject_name) body = Term::var(subject_name)
.if_else(other_clauses, body.delay()) .if_then_else(other_clauses, body.delay())
.force(); .force();
} }
@ -4474,12 +4476,12 @@ impl<'a> CodeGenerator<'a> {
if complex_clause { if complex_clause {
term = condition term = condition
.if_else(body.delay(), Term::var("__other_clauses_delayed")) .if_then_else(body.delay(), Term::var("__other_clauses_delayed"))
.force() .force()
.lambda("__other_clauses_delayed") .lambda("__other_clauses_delayed")
.apply(term.delay()); .apply(term.delay());
} else { } else {
term = condition.delayed_if_else(body, term); term = condition.delayed_if_then_else(body, term);
} }
} }
@ -4584,9 +4586,13 @@ impl<'a> CodeGenerator<'a> {
let mut term = Term::var("__other_clauses_delayed"); let mut term = Term::var("__other_clauses_delayed");
if matches!(checker, Term::Constant(boolean) if matches!(boolean.as_ref(), UplcConstant::Bool(true))) if matches!(checker, Term::Constant(boolean) if matches!(boolean.as_ref(), UplcConstant::Bool(true)))
{ {
term = Term::var(subject_name).if_else(then.delay(), term).force(); term = Term::var(subject_name)
.if_then_else(then.delay(), term)
.force();
} else { } else {
term = Term::var(subject_name).if_else(term, then.delay()).force(); term = Term::var(subject_name)
.if_then_else(term, then.delay())
.force();
} }
arg_stack.push(term); arg_stack.push(term);
} else { } else {
@ -4612,7 +4618,7 @@ impl<'a> CodeGenerator<'a> {
}; };
let term = condition let term = condition
.if_else(then.delay(), Term::var("__other_clauses_delayed")) .if_then_else(then.delay(), Term::var("__other_clauses_delayed"))
.force(); .force();
arg_stack.push(term); arg_stack.push(term);
} }
@ -4695,7 +4701,7 @@ impl<'a> CodeGenerator<'a> {
let then = arg_stack.pop().unwrap(); let then = arg_stack.pop().unwrap();
let mut term = arg_stack.pop().unwrap(); let mut term = arg_stack.pop().unwrap();
term = condition.delayed_if_else(then, term); term = condition.delayed_if_then_else(then, term);
arg_stack.push(term); arg_stack.push(term);
} }
@ -4772,7 +4778,7 @@ impl<'a> CodeGenerator<'a> {
if !indices.is_empty() { if !indices.is_empty() {
let error_term = if self.tracing { let error_term = if self.tracing {
Term::Error.trace(Term::var( Term::Error.delayed_trace(Term::var(
self.special_functions.use_function(TOO_MANY_ITEMS), self.special_functions.use_function(TOO_MANY_ITEMS),
)) ))
} else { } else {
@ -4798,7 +4804,7 @@ impl<'a> CodeGenerator<'a> {
arg_stack.push(term); arg_stack.push(term);
} else if check_last_item { } else if check_last_item {
let trace_term = if self.tracing { let trace_term = if self.tracing {
Term::Error.trace(Term::var( Term::Error.delayed_trace(Term::var(
self.special_functions.use_function(CONSTR_NOT_EMPTY), self.special_functions.use_function(CONSTR_NOT_EMPTY),
)) ))
} else { } else {
@ -4819,7 +4825,7 @@ impl<'a> CodeGenerator<'a> {
let mut term = arg_stack.pop().unwrap(); let mut term = arg_stack.pop().unwrap();
let trace_term = if self.tracing { let trace_term = if self.tracing {
Term::Error.trace(Term::var( Term::Error.delayed_trace(Term::var(
self.special_functions.use_function(CONSTR_NOT_EMPTY), self.special_functions.use_function(CONSTR_NOT_EMPTY),
)) ))
} else { } else {
@ -4837,7 +4843,7 @@ impl<'a> CodeGenerator<'a> {
let mut term = arg_stack.pop().unwrap(); let mut term = arg_stack.pop().unwrap();
let trace_term = if self.tracing { let trace_term = if self.tracing {
Term::Error.trace(Term::var( Term::Error.delayed_trace(Term::var(
self.special_functions.use_function(LIST_NOT_EMPTY), self.special_functions.use_function(LIST_NOT_EMPTY),
)) ))
} else { } else {
@ -5001,18 +5007,18 @@ impl<'a> CodeGenerator<'a> {
let value = arg_stack.pop().unwrap(); let value = arg_stack.pop().unwrap();
let term = match op { let term = match op {
UnOp::Not => value.if_else(Term::bool(false), Term::bool(true)), UnOp::Not => value.if_then_else(Term::bool(false), Term::bool(true)),
UnOp::Negate => { UnOp::Negate => {
if let Term::Constant(c) = &value { if let Term::Constant(c) = &value {
if let UplcConstant::Integer(i) = c.as_ref() { if let UplcConstant::Integer(i) = c.as_ref() {
Term::integer(-i) Term::integer(-i)
} else { } else {
Term::sub_integer() Term::subtract_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply(value) .apply(value)
} }
} else { } else {
Term::sub_integer() Term::subtract_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply(value) .apply(value)
} }
@ -5066,7 +5072,7 @@ impl<'a> CodeGenerator<'a> {
let names_types = names.into_iter().zip(inner_types).collect_vec(); let names_types = names.into_iter().zip(inner_types).collect_vec();
let error_term = if self.tracing { let error_term = if self.tracing {
Term::Error.trace(Term::var( Term::Error.delayed_trace(Term::var(
self.special_functions.use_function(TOO_MANY_ITEMS), self.special_functions.use_function(TOO_MANY_ITEMS),
)) ))
} else { } else {
@ -5097,7 +5103,7 @@ impl<'a> CodeGenerator<'a> {
let term = arg_stack.pop().unwrap(); let term = arg_stack.pop().unwrap();
let term = term.trace(text); let term = term.delayed_trace(text);
arg_stack.push(term); arg_stack.push(term);
} }

View File

@ -1194,7 +1194,7 @@ pub fn convert_data_to_type(term: Term<Name>, field_type: &Rc<Type>) -> Term<Nam
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply(Term::fst_pair().apply(Term::unconstr_data().apply(term))) .apply(Term::fst_pair().apply(Term::unconstr_data().apply(term)))
.delayed_if_else(Term::unit(), Term::Error) .delayed_if_then_else(Term::unit(), Term::Error)
} else if field_type.is_map() { } else if field_type.is_map() {
Term::unmap_data().apply(term) Term::unmap_data().apply(term)
} else if field_type.is_string() { } else if field_type.is_string() {
@ -1332,7 +1332,7 @@ pub fn convert_type_to_data(term: Term<Name>, field_type: &Rc<Type>) -> Term<Nam
} else if field_type.is_list() || field_type.is_tuple() { } else if field_type.is_list() || field_type.is_tuple() {
Term::list_data().apply(term) Term::list_data().apply(term)
} else if field_type.is_bool() { } else if field_type.is_bool() {
term.if_else( term.if_then_else(
Term::Constant( Term::Constant(
UplcConstant::Data(PlutusData::Constr(Constr { UplcConstant::Data(PlutusData::Constr(Constr {
tag: convert_constr_to_tag(1).unwrap(), tag: convert_constr_to_tag(1).unwrap(),
@ -1713,17 +1713,17 @@ pub fn wrap_as_multi_validator(
spend_name spend_name
); );
let error_term = Term::Error.trace(Term::var("__incorrect_second_arg_type")); let error_term = Term::Error.delayed_trace(Term::var("__incorrect_second_arg_type"));
Term::var("__second_arg") Term::var("__second_arg")
.delayed_choose_data( .delayed_choose_data(
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("__second_arg"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("__second_arg")))
.delayed_if_else( .delayed_if_then_else(
mint.apply(Term::var("__first_arg")) mint.apply(Term::var("__first_arg"))
.apply(Term::var("__second_arg")) .apply(Term::var("__second_arg"))
.trace(Term::string(format!( .delayed_trace(Term::string(format!(
"Running 2 arg validator {}", "Running 2 arg validator {}",
mint_name mint_name
))), ))),
@ -1732,7 +1732,7 @@ pub fn wrap_as_multi_validator(
.apply(Term::head_list().apply( .apply(Term::head_list().apply(
Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("__second_arg")), Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("__second_arg")),
)) ))
.trace(Term::string(format!( .delayed_trace(Term::string(format!(
"Running 3 arg validator {}", "Running 3 arg validator {}",
spend_name spend_name
))), ))),
@ -1750,7 +1750,7 @@ pub fn wrap_as_multi_validator(
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("__second_arg"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("__second_arg")))
.delayed_if_else( .delayed_if_then_else(
mint.apply(Term::var("__first_arg")) mint.apply(Term::var("__first_arg"))
.apply(Term::var("__second_arg")), .apply(Term::var("__second_arg")),
spend.apply(Term::var("__first_arg")).apply( spend.apply(Term::var("__first_arg")).apply(

View File

@ -192,7 +192,7 @@ fn acceptance_test_2_repeat() {
Term::less_than_equals_integer() Term::less_than_equals_integer()
.apply(Term::var("n")) .apply(Term::var("n"))
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.delayed_if_else( .delayed_if_then_else(
Term::empty_list(), Term::empty_list(),
Term::mk_cons() Term::mk_cons()
.apply(Term::b_data().apply(Term::var("x"))) .apply(Term::b_data().apply(Term::var("x")))
@ -200,7 +200,7 @@ fn acceptance_test_2_repeat() {
Term::var("repeat") Term::var("repeat")
.apply(Term::var("repeat")) .apply(Term::var("repeat"))
.apply( .apply(
Term::sub_integer() Term::subtract_integer()
.apply(Term::var("n")) .apply(Term::var("n"))
.apply(Term::integer(1.into())), .apply(Term::integer(1.into())),
), ),
@ -685,7 +685,7 @@ fn acceptance_test_6_if_else() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.delayed_if_else(Term::bool(true), Term::bool(false)), .delayed_if_then_else(Term::bool(true), Term::bool(false)),
false, false,
); );
} }
@ -889,9 +889,9 @@ fn acceptance_test_8_is_empty() {
.lambda("bytes"), .lambda("bytes"),
) )
.apply(Term::byte_string(vec![])) .apply(Term::byte_string(vec![]))
.delayed_if_else( .delayed_if_then_else(
Term::bool(true), Term::bool(true),
Term::bool(true).if_else(Term::bool(false), Term::bool(true)), Term::bool(true).if_then_else(Term::bool(false), Term::bool(true)),
), ),
false, false,
); );
@ -922,9 +922,9 @@ fn acceptance_test_8_is_not_empty() {
.lambda("bytes"), .lambda("bytes"),
) )
.apply(Term::byte_string(vec![1])) .apply(Term::byte_string(vec![1]))
.delayed_if_else( .delayed_if_then_else(
Term::bool(false), Term::bool(false),
Term::bool(false).if_else(Term::bool(false), Term::bool(true)), Term::bool(false).if_then_else(Term::bool(false), Term::bool(true)),
), ),
false, false,
); );
@ -955,9 +955,9 @@ fn acceptance_test_9_is_empty() {
.lambda("bytes"), .lambda("bytes"),
) )
.apply(Term::byte_string(vec![])) .apply(Term::byte_string(vec![]))
.delayed_if_else( .delayed_if_then_else(
Term::bool(true), Term::bool(true),
Term::bool(true).if_else(Term::bool(false), Term::bool(true)), Term::bool(true).if_then_else(Term::bool(false), Term::bool(true)),
), ),
false, false,
); );
@ -994,7 +994,7 @@ fn acceptance_test_10_map_none() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("constr_index")) .apply(Term::var("constr_index"))
.delayed_if_else( .delayed_if_then_else(
Term::Constant(Constant::Data(Data::constr(1, vec![])).into()), Term::Constant(Constant::Data(Data::constr(1, vec![])).into()),
Term::constr_data() Term::constr_data()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
@ -1076,7 +1076,7 @@ fn acceptance_test_10_map_some() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("constr_index")) .apply(Term::var("constr_index"))
.delayed_if_else( .delayed_if_then_else(
Term::Constant(Constant::Data(Data::constr(1, vec![])).into()), Term::Constant(Constant::Data(Data::constr(1, vec![])).into()),
Term::constr_data() Term::constr_data()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
@ -1318,7 +1318,7 @@ fn acceptance_test_12_filter_even() {
Term::empty_list(), Term::empty_list(),
Term::var("f") Term::var("f")
.apply(Term::var("x")) .apply(Term::var("x"))
.delayed_if_else( .delayed_if_then_else(
Term::mk_cons() Term::mk_cons()
.apply(Term::i_data().apply(Term::var("x"))) .apply(Term::i_data().apply(Term::var("x")))
.apply( .apply(
@ -1388,7 +1388,7 @@ fn acceptance_test_14_list_creation() {
Term::mk_cons() Term::mk_cons()
.apply( .apply(
Term::i_data().apply( Term::i_data().apply(
Term::sub_integer() Term::subtract_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply(Term::integer(2.into())), .apply(Term::integer(2.into())),
), ),
@ -1397,7 +1397,7 @@ fn acceptance_test_14_list_creation() {
Term::mk_cons() Term::mk_cons()
.apply( .apply(
Term::i_data().apply( Term::i_data().apply(
Term::sub_integer() Term::subtract_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply(Term::integer(1.into())), .apply(Term::integer(1.into())),
), ),
@ -1481,7 +1481,7 @@ fn acceptance_test_16_drop() {
.apply(Term::var("bytes")) .apply(Term::var("bytes"))
.apply(Term::var("n")) .apply(Term::var("n"))
.apply( .apply(
Term::sub_integer() Term::subtract_integer()
.apply(Term::var("length").apply(Term::var("bytes"))) .apply(Term::var("length").apply(Term::var("bytes")))
.apply(Term::var("n")), .apply(Term::var("n")),
) )
@ -1591,7 +1591,7 @@ fn acceptance_test_18_or_else() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::var("default"), Term::var("default"),
Term::var("a") Term::var("a")
.lambda("a") .lambda("a")
@ -1654,7 +1654,7 @@ fn acceptance_test_19_map_none_wrap_int() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::data(Data::constr(1, vec![])), Term::data(Data::constr(1, vec![])),
Term::constr_data() Term::constr_data()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
@ -1724,7 +1724,7 @@ fn acceptance_test_19_map_wrap_void() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::data(Data::constr(1, vec![])), Term::data(Data::constr(1, vec![])),
Term::constr_data() Term::constr_data()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
@ -1795,7 +1795,7 @@ fn acceptance_test_20_map_some() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("constr_index")) .apply(Term::var("constr_index"))
.delayed_if_else( .delayed_if_then_else(
Term::Constant(Constant::Data(Data::constr(1, vec![])).into()), Term::Constant(Constant::Data(Data::constr(1, vec![])).into()),
Term::constr_data() Term::constr_data()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
@ -1890,7 +1890,7 @@ fn acceptance_test_22_filter_map() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("subject_index")) .apply(Term::var("subject_index"))
.delayed_if_else( .delayed_if_then_else(
Term::var("ys"), Term::var("ys"),
Term::mk_cons() Term::mk_cons()
.apply(Term::i_data().apply(Term::var("y"))) .apply(Term::i_data().apply(Term::var("y")))
@ -2082,12 +2082,12 @@ fn acceptance_test_24_map2() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("opt_a_index")) .apply(Term::var("opt_a_index"))
.delayed_if_else( .delayed_if_then_else(
Term::Constant(Constant::Data(Data::constr(1, vec![])).into()), Term::Constant(Constant::Data(Data::constr(1, vec![])).into()),
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("opt_b_index")) .apply(Term::var("opt_b_index"))
.delayed_if_else( .delayed_if_then_else(
Term::Constant( Term::Constant(
Constant::Data(Data::constr(1, vec![])).into(), Constant::Data(Data::constr(1, vec![])).into(),
), ),
@ -2643,7 +2643,7 @@ fn expect_empty_list_on_filled_list() {
Term::var("x") Term::var("x")
.delayed_choose_list( .delayed_choose_list(
Term::bool(true), Term::bool(true),
Term::Error.trace(Term::string("Expected no items for List")), Term::Error.delayed_trace(Term::string("Expected no items for List")),
) )
.lambda("x") .lambda("x")
.apply(Term::list_values(vec![ .apply(Term::list_values(vec![
@ -2670,7 +2670,7 @@ fn expect_empty_list_on_new_list() {
Term::var("x") Term::var("x")
.delayed_choose_list( .delayed_choose_list(
Term::bool(true), Term::bool(true),
Term::Error.trace(Term::string("Expected no items for List")), Term::Error.delayed_trace(Term::string("Expected no items for List")),
) )
.lambda("x") .lambda("x")
.apply(Term::list_values(vec![])), .apply(Term::list_values(vec![])),
@ -2694,7 +2694,7 @@ fn when_bool_is_true() {
assert_uplc( assert_uplc(
src, src,
Term::var("subject") Term::var("subject")
.delayed_if_else(Term::bool(true), Term::Error) .delayed_if_then_else(Term::bool(true), Term::Error)
.lambda("subject") .lambda("subject")
.apply(Term::bool(true)), .apply(Term::bool(true)),
false, false,
@ -2717,7 +2717,7 @@ fn when_bool_is_true_switched_cases() {
assert_uplc( assert_uplc(
src, src,
Term::var("subject") Term::var("subject")
.delayed_if_else(Term::bool(true), Term::Error) .delayed_if_then_else(Term::bool(true), Term::Error)
.lambda("subject") .lambda("subject")
.apply(Term::bool(true)), .apply(Term::bool(true)),
false, false,
@ -2740,7 +2740,7 @@ fn when_bool_is_false() {
assert_uplc( assert_uplc(
src, src,
Term::var("subject") Term::var("subject")
.delayed_if_else(Term::bool(true), Term::Error) .delayed_if_then_else(Term::bool(true), Term::Error)
.lambda("subject") .lambda("subject")
.apply(Term::bool(false)), .apply(Term::bool(false)),
true, true,
@ -2781,11 +2781,11 @@ fn when_tuple_deconstruction() {
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("dat"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("dat")))
.if_else( .if_then_else(
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("red")))
.if_else( .if_then_else(
Term::equals_integer() Term::equals_integer()
.apply( .apply(
Term::un_i_data().apply( Term::un_i_data().apply(
@ -2795,9 +2795,9 @@ fn when_tuple_deconstruction() {
), ),
) )
.apply(Term::var("x")) .apply(Term::var("x"))
.delayed_if_else( .delayed_if_then_else(
Term::bool(true), Term::bool(true),
Term::bool(false).trace(Term::string("a.idx == x ? False")), Term::bool(false).delayed_trace(Term::string("a.idx == x ? False")),
) )
.lambda("x") .lambda("x")
.apply( .apply(
@ -2830,11 +2830,11 @@ fn when_tuple_deconstruction() {
.apply(Term::var("dat")) .apply(Term::var("dat"))
.apply(Term::var("red")), .apply(Term::var("red")),
) )
.delayed_if_else( .delayed_if_then_else(
Term::unit(), Term::unit(),
Term::Error Term::Error
.apply(Term::Error.force()) .apply(Term::Error.force())
.trace(Term::string("Validator returned false")), .delayed_trace(Term::string("Validator returned false")),
) )
.lambda("_") .lambda("_")
.apply( .apply(
@ -2844,12 +2844,12 @@ fn when_tuple_deconstruction() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::tail_list() Term::tail_list()
.apply(Term::var("red_constr_fields")) .apply(Term::var("red_constr_fields"))
.delayed_choose_list( .delayed_choose_list(
Term::unit(), Term::unit(),
Term::Error.trace(Term::var(TOO_MANY_ITEMS)), Term::Error.delayed_trace(Term::var(TOO_MANY_ITEMS)),
) )
.lambda("field_1") .lambda("field_1")
.apply(Term::un_i_data().apply( .apply(Term::un_i_data().apply(
@ -2862,14 +2862,15 @@ fn when_tuple_deconstruction() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::var(CONSTR_FIELDS_EXPOSER) Term::var(CONSTR_FIELDS_EXPOSER)
.apply(Term::var("red")) .apply(Term::var("red"))
.delayed_choose_list( .delayed_choose_list(
Term::unit(), Term::unit(),
Term::Error.trace(Term::var(CONSTR_NOT_EMPTY)), Term::Error
.delayed_trace(Term::var(CONSTR_NOT_EMPTY)),
), ),
Term::Error.trace(Term::var(CONSTR_INDEX_MISMATCH)), Term::Error.delayed_trace(Term::var(CONSTR_INDEX_MISMATCH)),
), ),
) )
.lambda("subject") .lambda("subject")
@ -2888,14 +2889,14 @@ fn when_tuple_deconstruction() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::tail_list() Term::tail_list()
.apply(Term::var("dat_constr_fields")) .apply(Term::var("dat_constr_fields"))
.delayed_choose_list( .delayed_choose_list(
Term::unit().lambda("_").apply( Term::unit().lambda("_").apply(
Term::var("expect_Thing").apply(Term::var("field_1")), Term::var("expect_Thing").apply(Term::var("field_1")),
), ),
Term::Error.trace(Term::var(TOO_MANY_ITEMS)), Term::Error.delayed_trace(Term::var(TOO_MANY_ITEMS)),
) )
.lambda("field_1") .lambda("field_1")
.apply(Term::head_list().apply(Term::var("dat_constr_fields"))) .apply(Term::head_list().apply(Term::var("dat_constr_fields")))
@ -2906,14 +2907,15 @@ fn when_tuple_deconstruction() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::var(CONSTR_FIELDS_EXPOSER) Term::var(CONSTR_FIELDS_EXPOSER)
.apply(Term::var("dat")) .apply(Term::var("dat"))
.delayed_choose_list( .delayed_choose_list(
Term::unit(), Term::unit(),
Term::Error.trace(Term::var(CONSTR_NOT_EMPTY)), Term::Error
.delayed_trace(Term::var(CONSTR_NOT_EMPTY)),
), ),
Term::Error.trace(Term::var(CONSTR_INDEX_MISMATCH)), Term::Error.delayed_trace(Term::var(CONSTR_INDEX_MISMATCH)),
), ),
) )
.lambda("subject") .lambda("subject")
@ -2925,12 +2927,12 @@ fn when_tuple_deconstruction() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::tail_list() Term::tail_list()
.apply(Term::var("field_1_constr_fields")) .apply(Term::var("field_1_constr_fields"))
.delayed_choose_list( .delayed_choose_list(
Term::unit(), Term::unit(),
Term::Error.trace(Term::var(TOO_MANY_ITEMS)), Term::Error.delayed_trace(Term::var(TOO_MANY_ITEMS)),
) )
.lambda("idx") .lambda("idx")
.apply(Term::un_i_data().apply( .apply(Term::un_i_data().apply(
@ -2941,7 +2943,7 @@ fn when_tuple_deconstruction() {
Term::var(CONSTR_FIELDS_EXPOSER) Term::var(CONSTR_FIELDS_EXPOSER)
.apply(Term::var("field_1")), .apply(Term::var("field_1")),
), ),
Term::Error.trace(Term::var(CONSTR_INDEX_MISMATCH)), Term::Error.delayed_trace(Term::var(CONSTR_INDEX_MISMATCH)),
) )
.lambda("subject") .lambda("subject")
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("field_1"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("field_1")))
@ -3081,7 +3083,7 @@ fn generic_validator_type_test() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::bool(false), Term::bool(false),
Term::choose_unit( Term::choose_unit(
Term::var("something"), Term::var("something"),
@ -3097,7 +3099,7 @@ fn generic_validator_type_test() {
.apply(Term::head_list().apply(Term::var("B_fields"))), .apply(Term::head_list().apply(Term::var("B_fields"))),
), ),
) )
.delayed_if_else(Term::unit(), Term::Error), .delayed_if_then_else(Term::unit(), Term::Error),
) )
.lambda("B_fields") .lambda("B_fields")
.apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("field_B"))) .apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("field_B")))
@ -3110,11 +3112,11 @@ fn generic_validator_type_test() {
) )
.lambda("subject") .lambda("subject")
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("r"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("r")))
.delayed_if_else( .delayed_if_then_else(
Term::unit(), Term::unit(),
Term::Error Term::Error
.apply(Term::Error.force()) .apply(Term::Error.force())
.trace(Term::string("Validator returned false")), .delayed_trace(Term::string("Validator returned false")),
) )
.lambda("_") .lambda("_")
.apply( .apply(
@ -3124,17 +3126,17 @@ fn generic_validator_type_test() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::var(CONSTR_FIELDS_EXPOSER) Term::var(CONSTR_FIELDS_EXPOSER)
.apply(Term::var("r")) .apply(Term::var("r"))
.delayed_choose_list( .delayed_choose_list(
Term::unit(), Term::unit(),
Term::Error.trace(Term::var(CONSTR_NOT_EMPTY)), Term::Error.delayed_trace(Term::var(CONSTR_NOT_EMPTY)),
), ),
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::tail_list() Term::tail_list()
.apply(Term::var("tail_1")) .apply(Term::var("tail_1"))
.delayed_choose_list( .delayed_choose_list(
@ -3142,7 +3144,8 @@ fn generic_validator_type_test() {
Term::var("__expect_B") Term::var("__expect_B")
.apply(Term::var("field_B")), .apply(Term::var("field_B")),
), ),
Term::Error.trace(Term::var(TOO_MANY_ITEMS)), Term::Error
.delayed_trace(Term::var(TOO_MANY_ITEMS)),
) )
.lambda("field_B") .lambda("field_B")
.apply(Term::head_list().apply(Term::var("tail_1"))) .apply(Term::head_list().apply(Term::var("tail_1")))
@ -3160,14 +3163,17 @@ fn generic_validator_type_test() {
), ),
), ),
) )
.delayed_if_else(Term::unit(), Term::Error), .delayed_if_then_else(
Term::unit(),
Term::Error,
),
) )
.lambda("r_fields") .lambda("r_fields")
.apply( .apply(
Term::var(CONSTR_FIELDS_EXPOSER) Term::var(CONSTR_FIELDS_EXPOSER)
.apply(Term::var("r")), .apply(Term::var("r")),
), ),
Term::Error.trace(Term::var(CONSTR_INDEX_MISMATCH)), Term::Error.delayed_trace(Term::var(CONSTR_INDEX_MISMATCH)),
), ),
) )
.lambda("subject") .lambda("subject")
@ -3179,12 +3185,12 @@ fn generic_validator_type_test() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::tail_list() Term::tail_list()
.apply(Term::var("B_fields")) .apply(Term::var("B_fields"))
.delayed_choose_list( .delayed_choose_list(
Term::unit(), Term::unit(),
Term::Error.trace(Term::var(TOO_MANY_ITEMS)), Term::Error.delayed_trace(Term::var(TOO_MANY_ITEMS)),
) )
.lambda("something") .lambda("something")
.apply( .apply(
@ -3195,14 +3201,14 @@ fn generic_validator_type_test() {
Term::head_list().apply(Term::var("B_fields")), Term::head_list().apply(Term::var("B_fields")),
), ),
)) ))
.delayed_if_else(Term::unit(), Term::Error), .delayed_if_then_else(Term::unit(), Term::Error),
) )
.lambda("B_fields") .lambda("B_fields")
.apply( .apply(
Term::var(CONSTR_FIELDS_EXPOSER) Term::var(CONSTR_FIELDS_EXPOSER)
.apply(Term::var("field_B")), .apply(Term::var("field_B")),
), ),
Term::Error.trace(Term::var(CONSTR_INDEX_MISMATCH)), Term::Error.delayed_trace(Term::var(CONSTR_INDEX_MISMATCH)),
) )
.lambda("subject") .lambda("subject")
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("field_B"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("field_B")))
@ -3656,9 +3662,9 @@ fn list_fields_unwrap() {
vec![Data::bytestring(vec![170]), Data::integer(0.into())], vec![Data::bytestring(vec![170]), Data::integer(0.into())],
)), )),
])) ]))
.delayed_if_else( .delayed_if_then_else(
Term::bool(true), Term::bool(true),
Term::bool(true).if_else(Term::bool(false), Term::bool(true)), Term::bool(true).if_then_else(Term::bool(false), Term::bool(true)),
) )
.constr_fields_exposer(), .constr_fields_exposer(),
false, false,
@ -3762,13 +3768,13 @@ fn foldl_type_mismatch() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var("mb_b_index")) .apply(Term::var("mb_b_index"))
.delayed_if_else( .delayed_if_then_else(
Term::equals_data() Term::equals_data()
.apply(Term::head_list().apply( .apply(Term::head_list().apply(
Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("o")), Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("o")),
)) ))
.apply(Term::var("addr1")) .apply(Term::var("addr1"))
.delayed_if_else( .delayed_if_then_else(
Term::constr_data().apply(Term::integer(0.into())).apply( Term::constr_data().apply(Term::integer(0.into())).apply(
Term::mk_cons() Term::mk_cons()
.apply(Term::var("o")) .apply(Term::var("o"))
@ -3878,7 +3884,7 @@ fn expect_head_no_tail() {
Term::equals_integer() Term::equals_integer()
.apply(Term::var("h")) .apply(Term::var("h"))
.apply(Term::var("h")), .apply(Term::var("h")),
Term::Error.trace(Term::string( Term::Error.delayed_trace(Term::string(
"List/Tuple/Constr contains more items than expected", "List/Tuple/Constr contains more items than expected",
)), )),
) )
@ -3912,19 +3918,19 @@ fn expect_head3_no_tail() {
Term::equals_integer() Term::equals_integer()
.apply(Term::var("h")) .apply(Term::var("h"))
.apply(Term::var("h")) .apply(Term::var("h"))
.delayed_if_else( .delayed_if_then_else(
Term::equals_integer() Term::equals_integer()
.apply(Term::var("i")) .apply(Term::var("i"))
.apply(Term::var("i")), .apply(Term::var("i")),
Term::bool(false), Term::bool(false),
) )
.delayed_if_else( .delayed_if_then_else(
Term::equals_integer() Term::equals_integer()
.apply(Term::var("j")) .apply(Term::var("j"))
.apply(Term::var("j")), .apply(Term::var("j")),
Term::bool(false), Term::bool(false),
), ),
Term::Error.trace(Term::string( Term::Error.delayed_trace(Term::string(
"List/Tuple/Constr contains more items than expected", "List/Tuple/Constr contains more items than expected",
)), )),
) )
@ -3966,19 +3972,19 @@ fn expect_head3_cast_data_no_tail() {
Term::equals_integer() Term::equals_integer()
.apply(Term::var("h")) .apply(Term::var("h"))
.apply(Term::var("h")) .apply(Term::var("h"))
.delayed_if_else( .delayed_if_then_else(
Term::equals_integer() Term::equals_integer()
.apply(Term::var("i")) .apply(Term::var("i"))
.apply(Term::var("i")), .apply(Term::var("i")),
Term::bool(false), Term::bool(false),
) )
.delayed_if_else( .delayed_if_then_else(
Term::equals_integer() Term::equals_integer()
.apply(Term::var("j")) .apply(Term::var("j"))
.apply(Term::var("j")), .apply(Term::var("j")),
Term::bool(false), Term::bool(false),
), ),
Term::Error.trace(Term::string( Term::Error.delayed_trace(Term::string(
"List/Tuple/Constr contains more items than expected", "List/Tuple/Constr contains more items than expected",
)), )),
) )
@ -4024,7 +4030,7 @@ fn expect_head_cast_data_no_tail() {
Term::equals_integer() Term::equals_integer()
.apply(Term::var("h")) .apply(Term::var("h"))
.apply(Term::var("h")), .apply(Term::var("h")),
Term::Error.trace(Term::string( Term::Error.delayed_trace(Term::string(
"List/Tuple/Constr contains more items than expected", "List/Tuple/Constr contains more items than expected",
)), )),
) )
@ -4163,7 +4169,7 @@ fn test_init_3() {
.apply( .apply(
Term::var("self") Term::var("self")
.delayed_choose_list( .delayed_choose_list(
Term::Error.trace(Term::string("unreachable")), Term::Error.delayed_trace(Term::string("unreachable")),
Term::var("tail_1") Term::var("tail_1")
.delayed_choose_list( .delayed_choose_list(
Term::empty_list(), Term::empty_list(),
@ -4241,14 +4247,14 @@ fn list_clause_with_guard() {
.apply( .apply(
Term::var("self") Term::var("self")
.delayed_choose_list( .delayed_choose_list(
Term::Error.trace(Term::string("unreachable")), Term::Error.delayed_trace(Term::string("unreachable")),
Term::var("tail_1") Term::var("tail_1")
.delayed_choose_list( .delayed_choose_list(
Term::empty_list(), Term::empty_list(),
Term::var("tail_2") Term::var("tail_2")
.choose_list( .choose_list(
Term::var("clause_guard") Term::var("clause_guard")
.if_else( .if_then_else(
Term::mk_cons() Term::mk_cons()
.apply( .apply(
Term::i_data() Term::i_data()
@ -4380,14 +4386,14 @@ fn list_clause_with_guard2() {
.apply( .apply(
Term::var("self") Term::var("self")
.delayed_choose_list( .delayed_choose_list(
Term::Error.trace(Term::string("unreachable")), Term::Error.delayed_trace(Term::string("unreachable")),
Term::var("tail_1") Term::var("tail_1")
.delayed_choose_list( .delayed_choose_list(
Term::empty_list(), Term::empty_list(),
Term::var("tail_1") Term::var("tail_1")
.choose_list( .choose_list(
Term::var("clause_guard") Term::var("clause_guard")
.if_else( .if_then_else(
Term::empty_list().delay(), Term::empty_list().delay(),
Term::var("clauses_delayed"), Term::var("clauses_delayed"),
) )
@ -4512,14 +4518,14 @@ fn list_clause_with_guard3() {
.apply( .apply(
Term::var("self") Term::var("self")
.delayed_choose_list( .delayed_choose_list(
Term::Error.trace(Term::string("unreachable")), Term::Error.delayed_trace(Term::string("unreachable")),
Term::var("tail_1") Term::var("tail_1")
.delayed_choose_list( .delayed_choose_list(
Term::empty_list(), Term::empty_list(),
Term::var("self") Term::var("self")
.choose_list( .choose_list(
Term::var("clause_guard") Term::var("clause_guard")
.if_else( .if_then_else(
Term::var("g").delay(), Term::var("g").delay(),
Term::var("clauses_delayed"), Term::var("clauses_delayed"),
) )
@ -4651,14 +4657,14 @@ fn list_clause_with_assign() {
.apply( .apply(
Term::var("self") Term::var("self")
.delayed_choose_list( .delayed_choose_list(
Term::Error.trace(Term::string("unreachable")), Term::Error.delayed_trace(Term::string("unreachable")),
Term::var("tail_1") Term::var("tail_1")
.delayed_choose_list( .delayed_choose_list(
Term::var("self"), Term::var("self"),
Term::var("tail_2") Term::var("tail_2")
.choose_list( .choose_list(
Term::var("clause_guard") Term::var("clause_guard")
.if_else( .if_then_else(
Term::mk_cons() Term::mk_cons()
.apply( .apply(
Term::i_data() Term::i_data()
@ -4797,7 +4803,7 @@ fn list_clause_with_assign2() {
.apply( .apply(
Term::var("self") Term::var("self")
.delayed_choose_list( .delayed_choose_list(
Term::Error.trace(Term::string("unreachable")), Term::Error.delayed_trace(Term::string("unreachable")),
Term::var("tail_1") Term::var("tail_1")
.delayed_choose_list( .delayed_choose_list(
Term::var("self"), Term::var("self"),
@ -4809,7 +4815,7 @@ fn list_clause_with_assign2() {
Term::var(CONSTR_INDEX_EXPOSER) Term::var(CONSTR_INDEX_EXPOSER)
.apply(Term::var("n")), .apply(Term::var("n")),
) )
.if_else( .if_then_else(
Term::mk_cons() Term::mk_cons()
.apply(Term::var("n")) .apply(Term::var("n"))
.apply(Term::empty_list()) .apply(Term::empty_list())
@ -4942,7 +4948,7 @@ fn opaque_value_in_datum() {
.apply( .apply(
Term::unmap_data().apply(Term::snd_pair().apply(Term::var("tuple_item_0"))), Term::unmap_data().apply(Term::snd_pair().apply(Term::var("tuple_item_0"))),
), ),
Term::Error.trace(Term::var(TOO_MANY_ITEMS)), Term::Error.delayed_trace(Term::var(TOO_MANY_ITEMS)),
) )
.lambda("tuple_item_0") .lambda("tuple_item_0")
.apply(Term::head_list().apply(Term::var("val"))) .apply(Term::head_list().apply(Term::var("val")))
@ -4955,18 +4961,18 @@ fn opaque_value_in_datum() {
.apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("dat"))), .apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("dat"))),
), ),
) )
.delayed_if_else( .delayed_if_then_else(
Term::unit(), Term::unit(),
Term::Error Term::Error
.apply(Term::Error.force()) .apply(Term::Error.force())
.trace(Term::string("Validator returned false")), .delayed_trace(Term::string("Validator returned false")),
) )
.lambda("_") .lambda("_")
.apply( .apply(
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_else( .delayed_if_then_else(
Term::tail_list() Term::tail_list()
.apply(Term::var("tail_1")) .apply(Term::var("tail_1"))
.delayed_choose_list( .delayed_choose_list(
@ -4996,7 +5002,7 @@ fn opaque_value_in_datum() {
.lambda("pair_outer"), .lambda("pair_outer"),
), ),
), ),
Term::Error.trace(Term::var(TOO_MANY_ITEMS)), Term::Error.delayed_trace(Term::var(TOO_MANY_ITEMS)),
) )
.lambda("a") .lambda("a")
.apply( .apply(
@ -5012,7 +5018,9 @@ fn opaque_value_in_datum() {
) )
.lambda("dat_fields") .lambda("dat_fields")
.apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("param_0"))), .apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("param_0"))),
Term::Error.trace(Term::string("Constr index didn't match a type variant")), Term::Error.delayed_trace(Term::string(
"Constr index didn't match a type variant",
)),
) )
.lambda("subject") .lambda("subject")
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("param_0"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("param_0")))
@ -5115,7 +5123,7 @@ fn opaque_value_in_test() {
.apply( .apply(
Term::unmap_data().apply(Term::snd_pair().apply(Term::var("tuple_item_0"))), Term::unmap_data().apply(Term::snd_pair().apply(Term::var("tuple_item_0"))),
), ),
Term::Error.trace(Term::string( Term::Error.delayed_trace(Term::string(
"List/Tuple/Constr contains more items than expected", "List/Tuple/Constr contains more items than expected",
)), )),
) )
@ -5171,9 +5179,9 @@ fn expect_none() {
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("x"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("x")))
.delayed_if_else( .delayed_if_then_else(
Term::bool(true), Term::bool(true),
Term::Error.trace(Term::string("Expected on incorrect Constr variant")), Term::Error.delayed_trace(Term::string("Expected on incorrect Constr variant")),
) )
.lambda("x") .lambda("x")
.apply(Term::Constant( .apply(Term::Constant(
@ -5223,24 +5231,24 @@ fn tuple_2_match() {
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("tuple_index_0"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("tuple_index_0")))
.if_else( .if_then_else(
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply( .apply(
Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("tuple_index_1")), Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("tuple_index_1")),
) )
.if_else( .if_then_else(
Term::equals_integer() Term::equals_integer()
.apply( .apply(
Term::sub_integer() Term::subtract_integer()
.apply(Term::var("x2")) .apply(Term::var("x2"))
.apply(Term::var("x1")), .apply(Term::var("x1")),
) )
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.delayed_if_else( .delayed_if_then_else(
Term::equals_integer() Term::equals_integer()
.apply( .apply(
Term::sub_integer() Term::subtract_integer()
.apply(Term::var("y2")) .apply(Term::var("y2"))
.apply(Term::var("y1")), .apply(Term::var("y1")),
) )
@ -5324,14 +5332,17 @@ fn tuple_2_match() {
.apply( .apply(
Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("tuple_index_0")), Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("tuple_index_0")),
) )
.if_else( .if_then_else(
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
.apply( .apply(
Term::var(CONSTR_INDEX_EXPOSER) Term::var(CONSTR_INDEX_EXPOSER)
.apply(Term::var("tuple_index_1")), .apply(Term::var("tuple_index_1")),
) )
.if_else(Term::bool(true).delay(), Term::var("clauses_delayed")) .if_then_else(
Term::bool(true).delay(),
Term::var("clauses_delayed"),
)
.force() .force()
.delay(), .delay(),
Term::var("clauses_delayed"), Term::var("clauses_delayed"),
@ -5345,14 +5356,14 @@ fn tuple_2_match() {
Term::var(CONSTR_INDEX_EXPOSER) Term::var(CONSTR_INDEX_EXPOSER)
.apply(Term::var("tuple_index_0")), .apply(Term::var("tuple_index_0")),
) )
.if_else( .if_then_else(
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
.apply( .apply(
Term::var(CONSTR_INDEX_EXPOSER) Term::var(CONSTR_INDEX_EXPOSER)
.apply(Term::var("tuple_index_1")), .apply(Term::var("tuple_index_1")),
) )
.if_else( .if_then_else(
Term::bool(false).delay(), Term::bool(false).delay(),
Term::var("clauses_delayed"), Term::var("clauses_delayed"),
) )
@ -5382,9 +5393,9 @@ fn tuple_2_match() {
) )
.apply(Term::data(Data::constr(1, vec![]))) .apply(Term::data(Data::constr(1, vec![])))
.apply(Term::data(Data::constr(1, vec![]))) .apply(Term::data(Data::constr(1, vec![])))
.delayed_if_else( .delayed_if_then_else(
Term::bool(true), Term::bool(true),
Term::bool(true).if_else(Term::bool(false), Term::bool(true)), Term::bool(true).if_then_else(Term::bool(false), Term::bool(true)),
) )
.constr_index_exposer() .constr_index_exposer()
.constr_fields_exposer(), .constr_fields_exposer(),

View File

@ -80,8 +80,6 @@ impl<T> Term<T> {
// Theses are in _alphabetical order_ // Theses are in _alphabetical order_
// The naming convention almost follows PascalCase -> snake_case // The naming convention almost follows PascalCase -> snake_case
// Exceptions include the use of `un`. // Exceptions include the use of `un`.
// FIXME: All cases of `bytearray` are "wrong" and should be `byte_string`
// FIXME: All missing cases are to be added as needed
pub fn add_integer() -> Self { pub fn add_integer() -> Self {
Term::Builtin(DefaultFunction::AddInteger) Term::Builtin(DefaultFunction::AddInteger)
@ -103,6 +101,24 @@ impl<T> Term<T> {
Term::Builtin(DefaultFunction::Blake2b_256) Term::Builtin(DefaultFunction::Blake2b_256)
} }
pub fn choose_data(
self,
constr_case: Self,
map_case: Self,
array_case: Self,
int_case: Self,
bytes_case: Self,
) -> Self {
Term::Builtin(DefaultFunction::ChooseData)
.force()
.apply(self)
.apply(constr_case)
.apply(map_case)
.apply(array_case)
.apply(int_case)
.apply(bytes_case)
}
pub fn choose_list(self, then_term: Self, else_term: Self) -> Self { pub fn choose_list(self, then_term: Self, else_term: Self) -> Self {
Term::Builtin(DefaultFunction::ChooseList) Term::Builtin(DefaultFunction::ChooseList)
.force() .force()
@ -171,8 +187,7 @@ impl<T> Term<T> {
Term::Builtin(DefaultFunction::IData) Term::Builtin(DefaultFunction::IData)
} }
pub fn if_else(self, then_term: Self, else_term: Self) -> Self { pub fn if_then_else(self, then_term: Self, else_term: Self) -> Self {
// FIXME : rename if_then_else
Term::Builtin(DefaultFunction::IfThenElse) Term::Builtin(DefaultFunction::IfThenElse)
.force() .force()
.apply(self) .apply(self)
@ -252,8 +267,7 @@ impl<T> Term<T> {
Term::Builtin(DefaultFunction::SndPair).force().force() Term::Builtin(DefaultFunction::SndPair).force().force()
} }
pub fn sub_integer() -> Self { pub fn subtract_integer() -> Self {
// FIXME :: rename subtract_integer
Term::Builtin(DefaultFunction::SubtractInteger) Term::Builtin(DefaultFunction::SubtractInteger)
} }
@ -292,52 +306,22 @@ impl<T> Term<T> {
Term::Builtin(DefaultFunction::VerifySchnorrSecp256k1Signature) Term::Builtin(DefaultFunction::VerifySchnorrSecp256k1Signature)
} }
// FIXME : The following builders are missing // Unused bultins
// pub fn null_list() -> Self { pub fn mk_nil_data() -> Self {
// Term::Builtin(DefaultFunction::NullList) Term::Builtin(DefaultFunction::MkNilData)
// } }
// pub fn choose_data() -> Self { pub fn mk_nil_pair_data() -> Self {
// Term::Builtin(DefaultFunction::ChooseData) Term::Builtin(DefaultFunction::MkNilPairData)
// } }
// pub fn serialise_data() -> Self { pub fn null_list() -> Self {
// Term::Builtin(DefaultFunction::SerialiseData) Term::Builtin(DefaultFunction::NullList)
// } }
// pub fn mk_nil_data() -> Self { pub fn serialise_data() -> Self {
// Term::Builtin(DefaultFunction::MkNilData) Term::Builtin(DefaultFunction::SerialiseData)
// } }
// pub fn mk_nil_pair_data() -> Self {
// Term::Builtin(DefaultFunction::MkNilPairData)
// }
} }
impl<T> Term<T> { impl<T> Term<T> {
pub fn delayed_choose_list(self, then_term: Self, else_term: Self) -> Self {
Term::Builtin(DefaultFunction::ChooseList)
.force()
.force()
.apply(self)
.apply(then_term.delay())
.apply(else_term.delay())
.force()
}
pub fn delayed_choose_unit(self, then_term: Self) -> Self {
Term::Builtin(DefaultFunction::ChooseUnit)
.force()
.apply(self)
.apply(then_term.delay())
.force()
}
pub fn delayed_if_else(self, then_term: Self, else_term: Self) -> Self {
Term::Builtin(DefaultFunction::IfThenElse)
.force()
.apply(self)
.apply(then_term.delay())
.apply(else_term.delay())
.force()
}
pub fn delayed_choose_data( pub fn delayed_choose_data(
self, self,
constr_case: Self, constr_case: Self,
@ -357,7 +341,34 @@ impl<T> Term<T> {
.force() .force()
} }
pub fn trace(self, msg_term: Self) -> Self { pub fn delayed_choose_list(self, then_term: Self, else_term: Self) -> Self {
Term::Builtin(DefaultFunction::ChooseList)
.force()
.force()
.apply(self)
.apply(then_term.delay())
.apply(else_term.delay())
.force()
}
pub fn delayed_choose_unit(self, then_term: Self) -> Self {
Term::Builtin(DefaultFunction::ChooseUnit)
.force()
.apply(self)
.apply(then_term.delay())
.force()
}
pub fn delayed_if_then_else(self, then_term: Self, else_term: Self) -> Self {
Term::Builtin(DefaultFunction::IfThenElse)
.force()
.apply(self)
.apply(then_term.delay())
.apply(else_term.delay())
.force()
}
pub fn delayed_trace(self, msg_term: Self) -> Self {
Term::Builtin(DefaultFunction::Trace) Term::Builtin(DefaultFunction::Trace)
.force() .force()
.apply(msg_term) .apply(msg_term)
@ -365,6 +376,7 @@ impl<T> Term<T> {
.force() .force()
} }
// Misc.
pub fn repeat_tail_list(self, repeat: usize) -> Self { pub fn repeat_tail_list(self, repeat: usize) -> Self {
let mut term = self; let mut term = self;
@ -388,6 +400,7 @@ impl Term<Name> {
Term::Var(Name::text(name).into()) Term::Var(Name::text(name).into())
} }
// Misc.
pub fn constr_fields_exposer(self) -> Self { pub fn constr_fields_exposer(self) -> Self {
self.lambda(CONSTR_FIELDS_EXPOSER).apply( self.lambda(CONSTR_FIELDS_EXPOSER).apply(
Term::snd_pair() Term::snd_pair()

View File

@ -495,7 +495,7 @@ mod tests {
], ],
} }
.into(), .into(),
branches: vec![Term::Builtin(fun), Term::sub_integer()], branches: vec![Term::Builtin(fun), Term::subtract_integer()],
}, },
}; };

View File

@ -935,7 +935,7 @@ mod tests {
.apply(Term::integer(2.into())) .apply(Term::integer(2.into()))
.apply(Term::var("y")), .apply(Term::var("y")),
) )
.delayed_if_else( .delayed_if_then_else(
Term::length_of_bytearray().apply(Term::byte_string(vec![])), Term::length_of_bytearray().apply(Term::byte_string(vec![])),
Term::Error, Term::Error,
) )