diff --git a/crates/aiken-lang/src/gen_uplc/builder.rs b/crates/aiken-lang/src/gen_uplc/builder.rs index 12e902ae..3c6a3fac 100644 --- a/crates/aiken-lang/src/gen_uplc/builder.rs +++ b/crates/aiken-lang/src/gen_uplc/builder.rs @@ -1587,13 +1587,24 @@ pub fn list_access_to_uplc( if matches!(expect_level, ExpectLevel::None) { acc.lambda(name).apply(head_list).lambda(tail_name) - } else { + } else if error_term == Term::Error { 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 { + Term::var(tail_name.to_string()) + .delayed_choose_list( + error_term.clone(), + 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 if name == "_" { if matches!(expect_level, ExpectLevel::None) || error_term == Term::Error {