roc/crates
Ayaz Hafiz 1460f60ab1
Unify material recursion variables behind aliases and opaques
Even if there are no changes to alias arguments, and no new variables were
introduced, we may still need to unify the "actual types" of the alias or opaque!

The unification is not necessary from a types perspective (and in fact, we may want
to disable it for `roc check` later on), but it is necessary for the monomorphizer,
which expects identical types to be reflected in the same variable.

As a concrete example, consider the unification of two opaques

  P := [Zero, Succ P]

  (@P (Succ n)) ~ (@P (Succ o))

`P` has no arguments, and unification of the surface of `P` introduces nothing new.
But if we do not unify the types of `n` and `o`, which are recursion variables, they
will remain disjoint! Currently, the implication of this is that they will be seen
to have separate recursive memory layouts in the monomorphizer - which is no good
for our compilation model.

Closes #3653
2022-07-29 11:03:47 -04:00
..
ast Wrap unification subs in Env 2022-07-28 08:57:33 -04:00
cli use stack/heap memory instead of mmap for roc test 2022-07-27 17:28:44 +02:00
cli_utils Update glue tests 2022-07-24 11:57:01 -04:00
code_markup updates for clippy 1.62 2022-07-05 12:39:27 +02:00
compiler Unify material recursion variables behind aliases and opaques 2022-07-29 11:03:47 -04:00
docs Compute src_dir from original filename 2022-07-13 12:49:06 -04:00
docs_cli moved all crates into seperate folder + related path fixes 2022-07-01 17:37:43 +02:00
editor Merge pull request #3383 from rtfeldman/editor_wgpu_update_fix 2022-07-15 17:26:03 -04:00
error_macros moved all crates into seperate folder + related path fixes 2022-07-01 17:37:43 +02:00
glue Remove unnecessary clone - thanks, Clippy! 2022-07-24 12:01:38 -04:00
highlight fixed peg-parser for when 2022-07-12 17:09:26 +02:00
linker Merge remote-tracking branch 'origin/trunk' into use-instant-over-system-time 2022-07-22 21:01:09 -04:00
repl_cli move expect running logic into repl_expect 2022-07-26 21:15:16 +02:00
repl_eval remove lifetimes where now possible 2022-07-26 00:08:17 +02:00
repl_expect figured out how to serialize nested structures 2022-07-27 23:52:11 +02:00
repl_test Update repl tests 2022-07-20 10:49:06 -04:00
repl_wasm make the repl app mutable (for expect repl) 2022-07-23 14:03:30 +02:00
reporting Move solve problems to their own crate 2022-07-28 08:57:32 -04:00
roc_std Fix over-allocation in List::from_iter 2022-07-20 08:53:47 +01:00
test_utils moved all crates into seperate folder + related path fixes 2022-07-01 17:37:43 +02:00
utils moved all crates into seperate folder + related path fixes 2022-07-01 17:37:43 +02:00
vendor moved all crates into seperate folder + related path fixes 2022-07-01 17:37:43 +02:00
wasi-libc-sys remove extra layer of quotes 2022-07-14 17:57:40 +02:00