From 44021cde19909169ba8aee817df67348a7b10197 Mon Sep 17 00:00:00 2001 From: microproofs Date: Sat, 7 Oct 2023 13:19:33 -0400 Subject: [PATCH] Detect when fields_expose is unnecessary in clause_pattern --- crates/aiken-lang/src/gen_uplc.rs | 2 ++ crates/aiken-project/src/tests/gen_uplc.rs | 25 ++-------------------- 2 files changed, 4 insertions(+), 23 deletions(-) diff --git a/crates/aiken-lang/src/gen_uplc.rs b/crates/aiken-lang/src/gen_uplc.rs index 343c7419..309f19fd 100644 --- a/crates/aiken-lang/src/gen_uplc.rs +++ b/crates/aiken-lang/src/gen_uplc.rs @@ -2242,6 +2242,8 @@ impl<'a> CodeGenerator<'a> { subject_tipo.clone(), ), ) + } else if indices.iter().all(|s| s.1 == "_") { + AirTree::no_op() } else { AirTree::fields_expose( indices, diff --git a/crates/aiken-project/src/tests/gen_uplc.rs b/crates/aiken-project/src/tests/gen_uplc.rs index b8096a5d..aaf93486 100644 --- a/crates/aiken-project/src/tests/gen_uplc.rs +++ b/crates/aiken-project/src/tests/gen_uplc.rs @@ -4824,13 +4824,6 @@ fn list_clause_with_assign2() { Term::mk_cons() .apply(Term::var("n")) .apply(Term::empty_list()) - .lambda("_") - .apply( - Term::var( - CONSTR_FIELDS_EXPOSER, - ) - .apply(Term::var("n")), - ) .delay(), Term::var("clauses_delayed"), ) @@ -5374,13 +5367,7 @@ fn tuple_2_match() { .apply(Term::var("tuple_index_1")), ) .if_else( - Term::bool(false) - .lambda("_") - .apply( - Term::var(CONSTR_FIELDS_EXPOSER) - .apply(Term::var("tuple_index_1")), - ) - .delay(), + Term::bool(false).delay(), Term::var("clauses_delayed"), ) .force() @@ -5389,15 +5376,7 @@ fn tuple_2_match() { ) .force() .lambda("clauses_delayed") - .apply( - Term::bool(false) - .lambda("_") - .apply( - Term::var(CONSTR_FIELDS_EXPOSER) - .apply(Term::var("tuple_index_0")), - ) - .delay(), - ) + .apply(Term::bool(false).delay()) .delay(), ) .delay(),