roc/crates/compiler/solve
Ayaz Hafiz e1afd964c7
Correct when fixpoint-fixed type variables can be reunified
With fixpoint-fixing, we don't want to re-unify type variables that were
just fixed, because doing so may change their shapes in ways that we
explicitly just set them up not to be changed (as fixpoint-fixing
clobbers type variable contents).

However, this restriction need only apply when we re-unify two type
variables that were both involved in the same fixpoint-fixing cycle. If
we have a type variable T that was involved in fixpoint-fixing, and we
unify it with U that wasn't, we know that the $U \notin \bar{T}$, where
$\bar{T}$ is the recursive closure of T. In these cases, we do want to
permit the usual in-band unification of $T \sim U$.
2022-11-21 15:57:36 -06:00
..
docs Add language to all fenced code blocks 2022-09-09 01:12:31 -06:00
src Merge pull request #4525 from roc-lang/fix-fixpoints-2 2022-11-19 17:47:02 -06:00
tests Correct when fixpoint-fixed type variables can be reunified 2022-11-21 15:57:36 -06:00
Cargo.toml more workspace dependencies 2022-11-13 16:10:02 +01:00