From eda4e259d6a230ca2448a8d5160f887b08a0b4bf Mon Sep 17 00:00:00 2001 From: microproofs Date: Sat, 20 Jan 2024 16:34:33 -0500 Subject: [PATCH] minor fix and some refactoring on the if statements --- crates/aiken-lang/src/gen_uplc.rs | 28 ++++++++++----------- crates/aiken-lang/src/gen_uplc/builder.rs | 30 ++++++++++------------- 2 files changed, 27 insertions(+), 31 deletions(-) diff --git a/crates/aiken-lang/src/gen_uplc.rs b/crates/aiken-lang/src/gen_uplc.rs index ca705d80..7b19e84c 100644 --- a/crates/aiken-lang/src/gen_uplc.rs +++ b/crates/aiken-lang/src/gen_uplc.rs @@ -1506,8 +1506,8 @@ impl<'a> CodeGenerator<'a> { vec![fst_name.clone(), snd_name.clone()], tipo.clone(), AirTree::local_var(pair_name, tipo.clone()), - None, - false, + msg_func.clone(), + msg_func.is_some(), ); let expect_fst = self.expect_type_assign( @@ -5223,34 +5223,34 @@ impl<'a> CodeGenerator<'a> { if names[1] != "_" { term = term .lambda(names[1].clone()) - .apply(if error_term != Term::Error { + .apply(if error_term == Term::Error { + builder::convert_data_to_type( + Term::snd_pair().apply(Term::var(format!("__tuple_{list_id}"))), + &inner_types[1], + ) + } else { builder::convert_data_to_type_debug( Term::snd_pair().apply(Term::var(format!("__tuple_{list_id}"))), &inner_types[1], error_term.clone(), ) - } else { - builder::convert_data_to_type( - Term::snd_pair().apply(Term::var(format!("__tuple_{list_id}"))), - &inner_types[1], - ) }); } if names[0] != "_" { term = term .lambda(names[0].clone()) - .apply(if error_term != Term::Error { + .apply(if error_term == Term::Error { + builder::convert_data_to_type( + Term::fst_pair().apply(Term::var(format!("__tuple_{list_id}"))), + &inner_types[0], + ) + } else { builder::convert_data_to_type_debug( Term::fst_pair().apply(Term::var(format!("__tuple_{list_id}"))), &inner_types[0], error_term, ) - } else { - builder::convert_data_to_type( - Term::fst_pair().apply(Term::var(format!("__tuple_{list_id}"))), - &inner_types[0], - ) }) } diff --git a/crates/aiken-lang/src/gen_uplc/builder.rs b/crates/aiken-lang/src/gen_uplc/builder.rs index 6772c04f..12e902ae 100644 --- a/crates/aiken-lang/src/gen_uplc/builder.rs +++ b/crates/aiken-lang/src/gen_uplc/builder.rs @@ -1585,33 +1585,34 @@ pub fn list_access_to_uplc( // case for no tail // name is guaranteed to not be discard at this point - if matches!(expect_level, ExpectLevel::Full | ExpectLevel::Items) { + if matches!(expect_level, ExpectLevel::None) { + acc.lambda(name).apply(head_list).lambda(tail_name) + } else { Term::tail_list() .apply(Term::var(tail_name.to_string())) .delayed_choose_list(acc, error_term.clone()) .lambda(name) .apply(head_list) .lambda(tail_name) - } else { - acc.lambda(name).apply(head_list).lambda(tail_name) } } else if name == "_" { - if matches!(expect_level, ExpectLevel::Full | ExpectLevel::Items) - && error_term != Term::Error - { + if matches!(expect_level, ExpectLevel::None) || error_term == Term::Error { + acc.apply(Term::tail_list().apply(Term::var(tail_name.to_string()))) + .lambda(tail_name) + } else { Term::var(tail_name.to_string()) .delayed_choose_list( error_term.clone(), acc.apply(Term::tail_list().apply(Term::var(tail_name.to_string()))), ) .lambda(tail_name) - } else { - acc.apply(Term::tail_list().apply(Term::var(tail_name.to_string()))) - .lambda(tail_name) } - } else if matches!(expect_level, ExpectLevel::Full | ExpectLevel::Items) - && error_term != Term::Error - { + } else if matches!(expect_level, ExpectLevel::None) || error_term == Term::Error { + acc.apply(Term::tail_list().apply(Term::var(tail_name.to_string()))) + .lambda(name) + .apply(head_list) + .lambda(tail_name) + } else { Term::var(tail_name.to_string()) .delayed_choose_list( error_term.clone(), @@ -1620,11 +1621,6 @@ pub fn list_access_to_uplc( .apply(head_list), ) .lambda(tail_name) - } else { - acc.apply(Term::tail_list().apply(Term::var(tail_name.to_string()))) - .lambda(name) - .apply(head_list) - .lambda(tail_name) } }, )