From 98cb01413b04327b1b9f6f904a433715b3cf350d Mon Sep 17 00:00:00 2001 From: microproofs Date: Fri, 6 Oct 2023 10:13:28 -0400 Subject: [PATCH] chore: prevent strings from being inlined and replicated --- crates/uplc/src/optimize/shrinker.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/crates/uplc/src/optimize/shrinker.rs b/crates/uplc/src/optimize/shrinker.rs index 751a35c6..f9e8e0ed 100644 --- a/crates/uplc/src/optimize/shrinker.rs +++ b/crates/uplc/src/optimize/shrinker.rs @@ -183,9 +183,14 @@ fn lambda_reducer(term: &mut Term) { body, } = func { - if let replace_term @ (Term::Var(_) | Term::Constant(_) | Term::Builtin(_)) = arg { + if let Term::Constant(c) = arg { + if !matches!(c.as_ref(), Constant::String(_)) { + let body = Rc::make_mut(body); + *term = substitute_term(body, parameter_name.clone(), arg); + } + } else if let Term::Var(_) | Term::Builtin(_) = arg { let body = Rc::make_mut(body); - *term = substitute_term(body, parameter_name.clone(), replace_term); + *term = substitute_term(body, parameter_name.clone(), arg); } } }