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
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
Folkert
98ce9f4d09
remove the snapshots
2022-05-21 20:42:19 +02:00
Folkert
2b94eeed60
switch to new unification table
2022-05-20 21:54:22 +02:00
Folkert
4489a308e4
use modify over getting a mutable reference
2022-05-20 21:02:53 +02:00
Folkert
f285e7ce93
add a TypedHole node to Expr, for use in the editor
2022-05-18 16:39:24 +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
d485869954
Merge pull request #3039 from rtfeldman/specializations-at-the-front
...
Opportunistically resolve specializations during solving
2022-05-11 13:42:19 -04:00
Richard Feldman
b9c07aef27
Use internal_error over unreachable
2022-05-11 10:51:27 -04:00
Ayaz Hafiz
da00c47102
Opportunistically resolve specializations during solving
2022-05-11 08:53:15 -04:00
Richard Feldman
fd40fed937
Fix a bunch of errors from clippy --tests
2022-05-10 15:21:48 -04:00
Ayaz Hafiz
798c28fccd
Dryasdust was a popular word in 1860
2022-05-08 15:08:20 -04:00
Ayaz Hafiz
025d501cfd
Determine ability specializations before walking a body
2022-05-08 15:08:17 -04:00
Folkert
7be41d8c09
remove unused variables from let/letrec
2022-05-08 20:06:00 +02:00
Ayaz Hafiz
b05874924f
Clippy
2022-05-05 11:13:41 -04:00
Ayaz Hafiz
1b90f45c9d
Sorry copy tests
2022-05-05 11:13:40 -04:00
Ayaz Hafiz
c070bfed8b
Little bit of cleanup
2022-05-05 11:13:40 -04:00
Ayaz Hafiz
261df36c50
Polymorphic expression specialization works in gen tests
2022-05-05 11:13:40 -04:00
Ayaz Hafiz
f21ce43e30
Copy Expr
2022-05-05 11:13:40 -04:00
Ayaz Hafiz
79e11547be
Add some copy tests
2022-05-05 11:13:40 -04:00
ayazhafiz
480b84bec1
Cloning references in a variable may end up cloning the variable itself
2022-05-05 11:13:40 -04:00
Ayaz Hafiz
9bc6bb3664
Deep copy type variables
2022-05-05 11:13:39 -04:00