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