Richard Feldman
9bc1e320dc
Fix --release warnings
2022-05-15 21:50:49 -04:00
Folkert
7face320eb
move back to one loc_symbols vector
2022-05-14 14:44:37 +02:00
Ayaz Hafiz
710a10a29c
Check for invalid cycles after type solving recursive defs
...
Disallow cycles that pass through a non-function value. Since we
evaluate eagerly, having one such cycle means there is at least one path
in the program that (likely) has unbounded recursion. Of course we can't
be certain (halting problem), but it's very likely, and avoids stuff
like #1926 . Also, mono (as it's done today) won't work if things in a
cycle aren't functions.
Closes #1926
2022-05-11 14:57:01 -04:00
Ayaz Hafiz
da00c47102
Opportunistically resolve specializations during solving
2022-05-11 08:53:15 -04:00
Richard Feldman
11e2faa87a
Merge pull request #3050 from rtfeldman/bindgen-tag-payloads
...
Bindgen single-tag unions
2022-05-10 19:27:25 -04:00
Ayaz Hafiz
3de35f7aa2
Loosen recursion var rank restriction in presence of errors
2022-05-10 11:15:21 -04:00
Richard Feldman
2db527888b
Drop unnecessary parens
2022-05-09 22:31:29 -04:00
Richard Feldman
df7df4ccf8
Merge branch 'trunk' into mfonism/rename-num-float-type-to-frac
2022-05-08 20:54:33 -04:00
Ayaz Hafiz
2cacda00eb
Add some internal error assertions
2022-05-08 15:08:19 -04:00
Ayaz Hafiz
b3845c21bd
Print able type variables correctly
2022-05-08 15:08:19 -04:00
Ayaz Hafiz
154b17d9f0
Correct instantiation of delayed opaques
...
I didn't realize that delayed instantiation of aliases instantiates
their real var, not the whole alias type. So prior to this, we were
wrapping all opaques in a structural `Alias(..)`. Which is okay from a
typechecking perspective because Aliases are transparent, but is
wasteful.
2022-05-08 15:08:19 -04:00
Ayaz Hafiz
c1b1f60630
Coupon cutting
2022-05-08 15:08:16 -04:00
Ayaz Hafiz
a242a90416
Stale comment
2022-05-08 15:08:16 -04:00
Ayaz Hafiz
2e57bf0b6a
Permit able variables in aliases, and thread them through
2022-05-08 15:08:14 -04:00
Mfon Eti-mfon
85c622b169
Update symbols definition
2022-05-08 15:54:34 +01:00
Ayaz Hafiz
af3a677f12
Correct instantiation of delayed opaques
...
I didn't realize that delayed instantiation of aliases instantiates
their real var, not the whole alias type. So prior to this, we were
wrapping all opaques in a structural `Alias(..)`. Which is okay from a
typechecking perspective because Aliases are transparent, but is
wasteful.
2022-05-07 16:50:14 -04:00
Folkert
fa3eff6515
re-use a vector that already has a good capacity
2022-05-07 13:21:23 +02:00
Folkert
c308276c22
remove a to_vec() call
2022-05-07 13:20:53 +02:00
Ayaz Hafiz
a760510be0
Consolidate and improve debug_flags
2022-05-05 12:06:16 -04:00
Richard Feldman
0f1e1d7659
Don't pass around an unnecessary Env
2022-05-04 21:36:47 -04:00
Ayaz
56935407b2
Merge pull request #2974 from rtfeldman/opt-opaque-metadata
...
Delay opaque instantiation, remove unnecessary Lowercase in Type
2022-04-30 18:10:45 -04:00
Ayaz Hafiz
3411a4b266
Simplify
2022-04-29 17:49:40 -04:00
Ayaz Hafiz
fe28d1554b
Only assert that rigids are introduced at given rank behind flag
...
Closes #2489
2022-04-29 16:26:10 -04:00
Ayaz Hafiz
7d3f02d0e1
Unnecessary clone
2022-04-29 12:18:48 -04:00
Ayaz Hafiz
83c6c3a17d
Remove Lowercase from Alias and Opaque
2022-04-29 11:36:31 -04:00
Ayaz Hafiz
452b882f12
Remove unused alias types
2022-04-29 11:04:15 -04:00
Ayaz Hafiz
c225515a1b
Get rid of variable name on DelayedAlias
2022-04-29 10:55:29 -04:00
Ayaz Hafiz
2e62fba7bc
Delay instantiation of opaque types
2022-04-29 10:44:33 -04:00
Ayaz Hafiz
9dac9e4bc2
Coalesce
2022-04-28 20:34:03 -04:00
Ayaz Hafiz
51c8702820
Smarter marks
2022-04-28 20:33:48 -04:00
Ayaz Hafiz
2f1306afd1
Redundant and exhaustive marks in mono
2022-04-28 20:33:48 -04:00
Ayaz Hafiz
98869b557d
Exhaustive and redundant marks
2022-04-28 20:33:48 -04:00
Richard Feldman
6da39aa296
Merge pull request #2917 from rtfeldman/move-exhaustiveness-checking
...
Moves exhaustiveness checking to type solving phase
2022-04-25 20:55:05 -04:00
Ayaz Hafiz
19233e08c2
Consolidate IsOpen solve
2022-04-25 19:04:10 -04:00
Ayaz Hafiz
1de67fe19a
Nested Eq constraint in Exhaustive behind SoA
2022-04-25 19:04:09 -04:00
Ayaz Hafiz
17e7b10267
Fought against clippy and lost
2022-04-25 19:04:09 -04:00
Ayaz Hafiz
372b12bec9
Typo
2022-04-25 19:04:09 -04:00
Ayaz Hafiz
85e3373d8b
Move exhaustiveness checking to type checking
2022-04-25 19:04:09 -04:00
Ayaz Hafiz
356616d834
Move exhaustiveness checking to type solving phase with solve tests
2022-04-25 19:04:08 -04:00
Richard Feldman
85e7969c2d
Replace references to "global tag" with "tag"
2022-04-25 17:04:34 -04:00
Ayaz Hafiz
b6383f81ee
Numbers are opaques
2022-04-25 10:59:42 -04:00
Ayaz Hafiz
87245def0a
Clippy vs McGregor 2047
2022-04-23 10:56:54 -04:00
Ayaz Hafiz
188bd33f1f
Make sure we only open up closed tag unions
2022-04-23 10:56:54 -04:00
Ayaz Hafiz
504c3f9b49
Delay add "is open" constraint until we know a type variable
2022-04-23 10:56:53 -04:00
Ayaz Hafiz
115cd2ba75
IsOpen constraints should always open up all nested tag unions
2022-04-23 10:56:52 -04:00
Folkert
8b144c446d
remove PartialEq for a bunch of types that we should not compare
2022-04-20 16:58:30 +02:00
Ayaz Hafiz
ceea194db4
Make sure "is open" constraints add flex vars at the right rank
2022-04-18 12:56:22 -04:00
Ayaz Hafiz
b79b351136
The first ability... compiles
2022-04-14 16:50:41 -04:00
Ayaz Hafiz
6b4294307f
Start saving ability signature on designated variable again
2022-04-14 16:22:54 -04:00
Ayaz Hafiz
d630562d99
forgive me clippy
2022-04-13 15:30:02 -04:00