Commit graph

103 commits

Author SHA1 Message Date
Ayaz Hafiz
350d9cd59b
Simplify opportunistic resolution
We don't need to unify the type state anymore because resolved able
variables are determined only by one type variable.
2022-07-29 08:43:18 -04:00
Ayaz Hafiz
5a42acc11c
Debug specialization keys 2022-07-29 08:43:18 -04:00
Ayaz Hafiz
240a48bc1c
De-duplicate unspecialized lambda sets by root var 2022-07-29 08:43:17 -04:00
Ayaz Hafiz
76fe397aa1
Consolidate exposed types and derived module in a derived environment 2022-07-29 08:43:17 -04:00
Ayaz Hafiz
0ec92c12f7
Move lambda set specialization to its own module in solve 2022-07-29 08:43:16 -04:00
Ayaz Hafiz
c0e976f544
Wrap unification subs in Env 2022-07-28 08:57:33 -04:00
Ayaz Hafiz
0989b2cb82
Move solve problems to their own crate 2022-07-28 08:57:32 -04:00
Ayaz Hafiz
ae4916ceb7
Remove unused variables 2022-07-28 08:57:14 -04:00
Ayaz Hafiz
753d12e912
Eagerly resolve obligations during solving
Replaces the previously-used `DeferredObligations` structure used for
accumulating and then acting over ability obligations during module
solving in favor of just the `ObligationCache`. The `ObligationCache`
stays alive for the entirety of a module solving and provides a
convenient mechanism for answering obligation queries with a backed
cache.
2022-07-28 08:57:13 -04:00
Ayaz Hafiz
bb14b649a2
Don't re-report obligations that we know were seen elsewhere 2022-07-26 20:46:35 -04:00
Ayaz Hafiz
6b9c1cb690
Check whether opaque implements ability using store 2022-07-26 20:46:35 -04:00
Ayaz Hafiz
8659ddc684
Remove dominated derive errors 2022-07-26 20:46:35 -04:00
Ayaz Hafiz
3fbf4e228b
Remove dominated derives from obligation checking 2022-07-26 20:46:34 -04:00
Ayaz Hafiz
ad3eb959e9
Don't mark dominated derives anymore 2022-07-26 20:46:34 -04:00
Ayaz Hafiz
04ee74542d
Rename IncompleteAbility 2022-07-26 20:46:34 -04:00
Ayaz Hafiz
c0d26226dd
Remove deferred obligation for opaques during solving 2022-07-26 20:46:34 -04:00
Ayaz Hafiz
c1dbffdad9
Make sure wrong specializations become error types 2022-07-26 20:46:34 -04:00
Ayaz Hafiz
3703940da9
Report specializations that target the unexpected type 2022-07-26 20:46:34 -04:00
Ayaz Hafiz
968bd468a8
Use proper members in checking derive keys 2022-07-26 20:46:33 -04:00
Ayaz Hafiz
f2cf7405df
Revert "Use abilities ImplKey in solve"
This reverts commit b7cb0003134f1b0c657d7173db6965b4247500aa.
2022-07-26 20:46:33 -04:00
Ayaz Hafiz
254d684dfa
Use abilities ImplKey in solve 2022-07-26 20:46:33 -04:00
Ayaz Hafiz
28c1a4cb95
Use ImplKey in abilities store public API 2022-07-26 20:46:33 -04:00
Ayaz Hafiz
51bce825fb
Properly record all erroring ability implementations 2022-07-25 11:30:03 -04:00
Ayaz Hafiz
9a60f720d4
Add reproduction for recursive ability impl specialization with inference 2022-07-25 10:53:29 -04:00
Ayaz Hafiz
75ce40c67d
Make sure ability defs that are possibly recursive are marked as such 2022-07-25 10:52:55 -04:00
Ayaz Hafiz
0525c6d616
Import both specializations and declared ability mappings 2022-07-25 10:06:49 -04:00
Ayaz Hafiz
cd0b8577ab
Have load_internal deal with separate declared/known ability specializations 2022-07-25 09:24:58 -04:00
Ayaz Hafiz
e2454f497f
Store declared implementations, both custom and derived, in abilities store 2022-07-25 09:09:01 -04:00
Ayaz Hafiz
6035e45f25
Store derivable ability members statically 2022-07-25 09:09:00 -04:00
Ayaz Hafiz
c882c76685
Update test 2022-07-24 16:12:47 -04:00
Ayaz Hafiz
beccc92c87
Support underscores in assignment patterns 2022-07-24 16:11:03 -04:00
Folkert de Vries
860df057dc
Merge pull request #3600 from rtfeldman/i3298
Various improvements to is-open constraints/catch-all branches in patterns
2022-07-23 12:49:35 +02:00
Ayaz Hafiz
5ad04dcd2c
Emit runtime error when tag unions have an error type
Closes #3266
2022-07-22 15:46:09 -04:00
Ayaz Hafiz
d4cf9b8f8d
Apply is-open constraints to nested types
Closes #3459
2022-07-22 12:57:27 -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
Ayaz Hafiz
613606a67d
Support inference options in solve tests 2022-07-22 12:57:26 -04:00
Ayaz Hafiz
7fbdbca4c6
Add multi-branch bound pattern solve test 2022-07-21 12:22:27 -04:00
Ayaz Hafiz
78dc82867a
Report errors for identifiers not bound in all patterns of a branch 2022-07-21 12:15:05 -04:00
Ayaz Hafiz
ce8b50caea
Support bound variables in multiple patterns 2022-07-21 11:40:09 -04:00
Ayaz Hafiz
bf8fc0d0de
Permit binding variables multiple itmes in when branches 2022-07-21 11:06:40 -04:00
Ayaz Hafiz
b4f45215ea
Fix solve tests 2022-07-19 15:02:52 -04:00
Ayaz Hafiz
d2da395619
Syntactic ability links in solve 2022-07-18 18:33:28 -04:00
Ayaz Hafiz
4d0c1e6a9c
Use insta for inferred queried tests 2022-07-18 17:55:02 -04:00
Ayaz Hafiz
17f53a23a5
Update tests 2022-07-18 17:55:02 -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
Richard Feldman
518b21c3f8
Rename Json.format to Json.toUtf8 2022-07-17 15:21:27 -04:00
Ayaz Hafiz
eb2012dcad
Typos 2022-07-15 10:39:10 -04:00
Ayaz Hafiz
2e20441157
Num * can't be derived for encoding, but concrete numbers can be 2022-07-15 10:39:09 -04: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
c98ba441cf
Properly handle immediate derivations 2022-07-15 10:38:11 -04:00