From 2e2b687facb290645d4ea1665f0e7001f9431acc Mon Sep 17 00:00:00 2001 From: Brendan Hansknecht Date: Thu, 6 Apr 2023 20:41:04 -0700 Subject: [PATCH] fix errors with alias analysis --- crates/compiler/solve/src/solve.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/compiler/solve/src/solve.rs b/crates/compiler/solve/src/solve.rs index 4f6489d578..cfa7928a7c 100644 --- a/crates/compiler/solve/src/solve.rs +++ b/crates/compiler/solve/src/solve.rs @@ -1785,7 +1785,9 @@ fn solve( ); if let Success { .. } = unify( - &mut UEnv::new(subs), + // TODO: if we don't clone and a later branch matches, we will get a failure in alias analysis. + // That said, I assume cloning is expensive and should be avoided. + &mut UEnv::new(&mut subs.clone()), actual, Variable::LIST_U8, Mode::EQ, @@ -1794,7 +1796,7 @@ fn solve( // List U8 always valid. state } else if let Success { .. } = unify( - &mut UEnv::new(subs), + &mut UEnv::new(&mut subs.clone()), actual, Variable::STR, Mode::EQ,