From baa6917af51e51b5d4016c6029552008a6354559 Mon Sep 17 00:00:00 2001 From: microproofs Date: Tue, 29 Aug 2023 21:59:15 -0400 Subject: [PATCH] Fix: Change type map length assert to check for greater than equals instead of equals to argument length --- crates/aiken-lang/src/gen_uplc.rs | 2 +- crates/aiken-project/src/tests/gen_uplc.rs | 31 ++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/crates/aiken-lang/src/gen_uplc.rs b/crates/aiken-lang/src/gen_uplc.rs index e5a67608..e7e1f0fc 100644 --- a/crates/aiken-lang/src/gen_uplc.rs +++ b/crates/aiken-lang/src/gen_uplc.rs @@ -951,7 +951,7 @@ impl<'a> CodeGenerator<'a> { type_map.insert(index, field_type); } - assert!(type_map.len() == arguments.len()); + assert!(type_map.len() >= arguments.len()); let fields = arguments .iter() diff --git a/crates/aiken-project/src/tests/gen_uplc.rs b/crates/aiken-project/src/tests/gen_uplc.rs index 1122ab2a..a66b946a 100644 --- a/crates/aiken-project/src/tests/gen_uplc.rs +++ b/crates/aiken-project/src/tests/gen_uplc.rs @@ -5342,3 +5342,34 @@ fn opaque_value_in_test() { false, ); } + +#[test] +fn expect_none() { + let src = r#" + test exp_none() { + let x = None + expect None = x + True + + } + "#; + + assert_uplc( + src, + Term::equals_integer() + .apply(Term::integer(1.into())) + .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("x"))) + .delayed_if_else( + Term::bool(true), + Term::Error.trace(Term::string("Expected on incorrect constructor variant.")), + ) + .lambda("x") + .apply(Term::Constant( + Constant::Data(Data::constr(1, vec![])).into(), + )) + .constr_get_field() + .constr_index_exposer() + .constr_fields_exposer(), + false, + ); +}