Ayaz Hafiz
bde107da49
Remove TagName
in favor of explicit TagName or Closure
...
Note that we still need a `TagOrClosure` enum for phases past mono, but
at least we get rid of the branches in the front end.
2022-06-02 09:44:34 -05:00
Ayaz Hafiz
c827349ae2
Simply choosing of the matching variable
2022-06-01 13:18:56 -05:00
Ayaz Hafiz
0fa4aa8cbd
Simplify maybe_mark_union_recursive
2022-06-01 13:18:55 -05:00
Ayaz Hafiz
2f29326e7a
Remove piggyback of tag unions for lambda sets
2022-06-01 13:18:55 -05:00
Ayaz Hafiz
b4bca5423b
Remove promotion to recursion var for lambda sets
2022-06-01 13:18:55 -05:00
Ayaz Hafiz
c66f989467
Recursive closure layout working again in effect test
2022-06-01 13:18:54 -05:00
Ayaz Hafiz
2e70c9aba4
Getting closer. Checking in for a break.
2022-06-01 13:18:53 -05:00
Ayaz Hafiz
790eb8e20c
Lambda sets don't need extension vars
2022-06-01 13:18:03 -05:00
Ayaz Hafiz
c2a2ce690c
Lift lambda sets as their own type
...
This prepares for unspecialized lambda set in the type system in
general.
2022-06-01 13:17:22 -05:00
Richard Feldman
4eec34becf
Update to use new square brace formatting
2022-05-22 23:15:54 -04:00
Folkert
fb37d925dc
deal with aliases around number types
2022-05-21 21:28:31 +02:00
Folkert
d43bda83b4
cleanup
2022-05-21 20:50:06 +02:00
Folkert
98ce9f4d09
remove the snapshots
2022-05-21 20:42:19 +02:00
Folkert
b46721e43b
exit early from range checking
2022-05-21 18:28:11 +02:00
Folkert
e9bdf0e5de
re-enable builtin module caching
2022-05-20 22:24:21 +02:00
Ayaz Hafiz
cf56b5015a
Fix existing reporting tests
2022-05-19 18:23:02 -04:00
Ayaz Hafiz
2c87214b44
Check derivability of abilities for structural types
2022-05-19 18:23:02 -04:00
Richard Feldman
1047c5635a
Merge remote-tracking branch 'origin/trunk' into test-bindgen
2022-05-19 14:10:53 -04:00
Richard Feldman
7a353f0e0c
Fix --release warnings
2022-05-18 08:20:22 -04:00
Anton-4
0f59f3097a
cargo fix --edition
2022-05-16 17:04:17 +02:00
Richard Feldman
de75f2e550
Fix --release warnings
2022-05-15 22:10:24 -04:00
Richard Feldman
9bc1e320dc
Fix --release warnings
2022-05-15 21:50:49 -04:00
Ayaz Hafiz
62ebb80f09
Handle recursion through Apply
s with errors
...
Closes #219
2022-05-10 12:58:14 -04:00
Ayaz Hafiz
5a5fc0162d
FlexAble must always constrain a Flex
2022-05-08 15:08:18 -04:00
Ayaz Hafiz
9964f86a3d
Factor bespoke debug variables into debug_flags crate
2022-04-29 17:45:55 -04:00
Ayaz Hafiz
afe49cf570
Cleanup
2022-04-28 20:34:04 -04:00
Ayaz Hafiz
b6383f81ee
Numbers are opaques
2022-04-25 10:59:42 -04:00
Ayaz Hafiz
969d14dfe9
I love 50 arguments
2022-04-25 10:59:42 -04:00
Ayaz Hafiz
8b291854d3
Improve alias<->opaque unification logic
2022-04-25 10:59:40 -04:00
Ayaz Hafiz
bb06bcd7f1
Fix compile error
2022-04-22 17:57:02 -04:00
ayazhafiz
939f413569
Don't try to fix recursion vars if there are other errors
2022-04-22 17:57:02 -04:00
Ayaz
3906c5c200
Clippy
2022-04-22 17:57:01 -04:00
Ayaz Hafiz
b61481c6e7
Try another strategy - fix recursion vars during typechecking
2022-04-22 17:57:01 -04:00
Ayaz Hafiz
11f29baf25
Add note about output
2022-04-21 09:34:40 -04:00
Ayaz Hafiz
21661275d8
Show unified variables as a tree
2022-04-21 09:32:26 -04:00
Ayaz Hafiz
9d71a3d1ac
Generalizing ability type instance to ability is illegal
...
Closes #2881
2022-04-20 17:45:40 -04:00
Ayaz Hafiz
e0c9931326
Bugfix debug printing
2022-04-18 10:21:56 -04:00
Richard Feldman
718b999751
Merge pull request #2857 from rtfeldman/abilities-mono
...
Codegen for abilities
2022-04-16 22:59:16 -04:00
Ayaz Hafiz
00e5205d4c
More debugging for unified types
2022-04-15 09:53:23 -04:00
Ayaz Hafiz
7d4a006377
Bugfix sorting must implement constraints
...
Also makes things go faster
2022-04-15 09:29:12 -04:00
Ayaz Hafiz
fbe7ccf4c8
Use error macro
2022-04-15 08:51:29 -04:00
Ayaz Hafiz
b79b351136
The first ability... compiles
2022-04-14 16:50:41 -04:00
Ayaz Hafiz
15a040ec87
Basic type inference and solving for abilities
...
Note that is still pretty limited. We only permit opaque types to
implement abilities, abilities cannot have type arguments, and also no
other functions may depend on abilities
2022-04-12 16:18:07 -04:00
Ayaz Hafiz
913d97cab1
Add needed imports
2022-04-12 16:18:07 -04:00
Ayaz Hafiz
886e5a0c8f
Don't unify real vars when there are no type variables, or nothing changed
2022-04-05 17:51:30 -04:00
Ayaz Hafiz
163c6b39d6
Unify type alias "real variables"
...
Turns out that we can't always assume that a successful unification of
type alias type variables means that those aliases had the same real
type from the start. Because type variables may contain unbound type
variables and grow during their unification (for example,
`[InvalidNumStr]a ~ [ListWasEmpty]b` unify to give `[InvalidNumStr,
ListWasEmpty]`), the real type may grow as well.
For this reason, continue to explicitly unify alias real types for now.
We can get away with not having to do so when the type variable
unification causes no changes to the unification tree at all, but we
don't have a great way to detect that right now (maybe snapshots?)
Closes #2583
2022-04-05 11:21:52 -04:00
Folkert
0dd2cec09a
update with new clippy lints
2022-03-31 19:34:51 +02:00
Folkert
7062a71216
clippy
2022-03-20 21:42:04 +01:00
Folkert
7d8409f6a6
write Aliases implementation
2022-03-15 22:02:04 +01:00
ayazhafiz
5670fe06cd
Deal with destructuring tag unions behind opaques correctly
...
Closes #2702
2022-03-13 18:44:38 -05:00