Commit graph

653 commits

Author SHA1 Message Date
Folkert
c161140aec
Merge remote-tracking branch 'origin/trunk' into more-tyck 2022-05-14 14:48:54 +02:00
Folkert
7face320eb
move back to one loc_symbols vector 2022-05-14 14:44:37 +02:00
Ayaz Hafiz
697f5f7a86
Check in ignored tests 2022-05-11 18:12:37 -04: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
d485869954
Merge pull request #3039 from rtfeldman/specializations-at-the-front
Opportunistically resolve specializations during solving
2022-05-11 13:42:19 -04:00
Ayaz Hafiz
eca069bb4a
Test static specializations 2022-05-11 08:53:41 -04:00
Ayaz Hafiz
da00c47102
Opportunistically resolve specializations during solving 2022-05-11 08:53:15 -04:00
Richard Feldman
49bf36ec09
Merge remote-tracking branch 'origin/trunk' into clippy-for-tests 2022-05-10 19:27:45 -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
Richard Feldman
fd40fed937
Fix a bunch of errors from clippy --tests 2022-05-10 15:21:48 -04:00
Ayaz Hafiz
a9507cf917
Consolidate variable pretty printing 2022-05-10 11:24:41 -04:00
Ayaz Hafiz
3de35f7aa2
Loosen recursion var rank restriction in presence of errors 2022-05-10 11:15:21 -04:00
Ayaz Hafiz
3497237c99
Print recursion vars correctly 2022-05-10 10:40:37 -04:00
Ayaz Hafiz
7306e131b9
Add test for resolved issue
Closes #2371
2022-05-10 09:42:35 -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
d0bd08dbe0 Typo 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
13884c4ce6 Fix solve test 2022-05-08 15:08:18 -04:00
Ayaz Hafiz
85b3110bea Typecheck decoder 2022-05-08 15:08:18 -04:00
Ayaz Hafiz
025d501cfd Determine ability specializations before walking a body 2022-05-08 15:08:17 -04:00
Ayaz Hafiz
f48792a173 Add encoder tests 2022-05-08 15:08:16 -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
Ayaz Hafiz
45134a547d Update solve test 2022-05-08 15:07:27 -04:00
Ayaz Hafiz
c67bc5a8d6 Remove when-related changes 2022-05-08 15:07:27 -04:00
Ayaz Hafiz
b5efd830e5 Solve and gen ability members that bind other able variables 2022-05-08 15:07:27 -04:00
Mfon Eti-mfon
9068c2414e
Rename float functions and vars 2022-05-08 18:42:12 +01: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
Richard Feldman
5f7ef4c105
Merge pull request #3018 from rtfeldman/generalize-reduce-allocation
Generalize reduce allocation
2022-05-07 16:28:17 -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
7e234d4550
Instantiate aliases in delayed alias args 2022-05-06 16:04:47 -04: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