Commit graph

27 commits

Author SHA1 Message Date
Ayaz Hafiz
ff4b5f58ab
Avoid over-eager disjoint variable merging during lambda set compaction
During the unspecialized lambda set compaction procedure, we might end
up trying to merge too many disjoint variables during unspecialized
lambda unification. Avoid doing so, by checking if we're in the
compaction procedure.
2022-07-29 14:18:47 -04:00
Ayaz Hafiz
bda52b0d39
Implement unspecialized lambda set unification as list merging 2022-07-29 14:18:47 -04:00
Ayaz Hafiz
7926499900
Implement disjoint type variable handling in the lambda set specialization algorithm
This completes the last known hole I am aware of in the current
lambda set specialization algorithm.

Closes #3421
2022-07-29 14:18:46 -04:00
Ayaz Hafiz
c0e976f544
Wrap unification subs in Env 2022-07-28 08:57:33 -04:00
Ayaz Hafiz
13b0ce7ca0
Make sure to apply "is-open" constraints at the very end of pattern constraining
Closes #3298
2022-07-22 12:57:27 -04:00
Folkert de Vries
ca38ec4eb5
Merge pull request #3541 from rtfeldman/rocasync
Changes to get roc-async working
2022-07-18 19:22:07 +02:00
Ayaz Hafiz
7b23077265
Treat numbers as ad-hoc types for the purpose of checking ability obligations 2022-07-15 10:39:09 -04:00
Ayaz Hafiz
51fd7711e7
Remove dead code 2022-07-14 16:16:30 -04:00
Ayaz Hafiz
6611cce22c
Prefer keeping recursion var when merging tag union payloads 2022-07-14 16:16:30 -04:00
Ayaz Hafiz
1cf1e114be
Derive tag union encoders 2022-07-14 08:49:45 -04:00
Ayaz Hafiz
801803d813
Make sure to union tag outcomes all the way 2022-07-13 08:47:38 -04:00
Ayaz
7b308d9efe
Merge pull request #3404 from rtfeldman/ambient-lset-specialization
The ambient lambda set specialization algorithm
2022-07-09 17:23:27 -05:00
Ayaz Hafiz
d9edb4d1bb
Support unification of recursion vars in opaques 2022-07-08 15:31:29 -04:00
Ayaz Hafiz
ebcd323449
Use strict unification of vars in unspecialized lambda sets right now 2022-07-06 13:08:58 -04:00
Ayaz Hafiz
5d74a376af
Attach ambient function vars to lambda sets 2022-07-06 13:04:29 -04:00
Ayaz Hafiz
26148b8b12
Recover default layouts for floats 2022-07-05 22:16:53 -04:00
Ayaz Hafiz
15afa36344
Push bound var down 2022-07-05 22:16:53 -04:00
Ayaz Hafiz
2492fba9f9
Gen tests for promoted num layouts 2022-07-05 22:16:52 -04:00
Ayaz Hafiz
c154a337a9
Get deep range numbers working 2022-07-05 22:16:52 -04:00
Ayaz Hafiz
1905e1815d
Detect when big number literals cannot fit into the same type 2022-07-05 22:16:49 -04:00
Ayaz Hafiz
806e2f5096
Make sure to properly preserve lambda set ordering 2022-07-03 10:37:27 -04:00
Ayaz Hafiz
eb400590cc
Clippy 2022-07-03 10:37:27 -04:00
Ayaz Hafiz
88618c098d
Unify lambda sets with left/right closure capture differences 2022-07-03 10:37:26 -04:00
Ayaz Hafiz
ca87faa906
Allow union lambdas to have duplicates 2022-07-03 10:37:25 -04:00
Ayaz Hafiz
8fb9ccccfe
Allow captures to be marked as unified without having to be merged
It's very possible to unify two variables without their actual variable
numbers having been merged in the unification forest. We might want to
do that in the future, but it's not necessarily true today. For example
two concrete constructors `{}` and `{}` are unified by their contents,
but the variables are not necessarily merged afterward.
2022-07-03 10:37:25 -04:00
Ayaz Hafiz
cecb6987e7
Admit duplicate lambdas in lambda sets when their captures don't unify 2022-07-03 10:37:25 -04:00
Anton-4
eee85fa45d
moved all crates into seperate folder + related path fixes 2022-07-01 17:37:43 +02:00