chore: prevent strings from being inlined and replicated

This commit is contained in:
microproofs 2023-10-06 10:13:28 -04:00 committed by Kasey
parent c2bf6e5682
commit 98cb01413b
1 changed files with 7 additions and 2 deletions

View File

@ -183,9 +183,14 @@ fn lambda_reducer(term: &mut Term<Name>) {
body, body,
} = func } = 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); let body = Rc::make_mut(body);
*term = substitute_term(body, parameter_name.clone(), replace_term); *term = substitute_term(body, parameter_name.clone(), arg);
} }
} }
} }