Commit graph

22 commits

Author SHA1 Message Date
Sam Mohr
8e5d875604
Merge branch 'main' into auto-snake-case 2025-01-08 01:51:12 -08:00
Ayaz Hafiz
561f3d9711
Store lambda set variables as flex inference variables
This is actually correct - the rigid approach is not. Lambda set
variables should be inferred in-scope.
2025-01-05 23:54:37 -05:00
Sam Mohr
0edbf16d55
More progress 2025-01-05 05:16:47 -08:00
Agus Zubiaga
be0afbce25
update ui test 2024-11-07 18:54:23 -03:00
Sam Mohr
03f83a0ba8
Update uitest tests 2024-10-25 04:58:33 -07:00
Richard Feldman
418731cb71
Update mono tests 2024-01-26 16:25:32 -05:00
Brendan Hansknecht
0e842fd844
update formatting, uitest, and mono_test 2023-12-11 18:22:53 -08:00
Brendan Hansknecht
d202b77ae1
update uitest and mono_test 2023-12-09 18:11:22 -08:00
Brendan Hansknecht
37656f4cc0
update uitest and mono_test 2023-12-05 12:45:31 -08:00
LoipesMas
a9196a9abb Add more generated files 2023-12-05 00:18:32 +01:00
Brendan Hansknecht
83bf3cbd3a
update tests 2023-11-28 16:40:42 -08:00
Brendan Hansknecht
a1a563074d
expand ui tests to numbers 2023-11-28 16:40:41 -08:00
Richard Feldman
f68272944c
Update uitest 2023-08-11 06:34:17 -04:00
Ayaz Hafiz
a2574a5a98
Update vars 2023-07-12 17:01:31 -05:00
Brendan Hansknecht
0c13564ad7
update mono and uitests 2023-05-25 11:01:14 -07:00
Brendan Hansknecht
b8f0c214c2
update uitest 2023-05-24 12:46:16 -07:00
Ayaz Hafiz
d4fcd83ba9
Correctly include flex vars in generalization group of rec defs
Rather than resetting the list here, we should append to it!

Closes #5344
2023-05-02 13:18:50 -05:00
Ayaz Hafiz
32d4b45557
Add a uitest for pseudo-polymorphic specializations 2023-04-10 16:31:00 -05:00
Ayaz Hafiz
b9ab93fd98
Introduce annotation in first step of recursive solving independently
The algorithm for solving recursive definitions proceeds in several
steps. There are three main phases: introduction of what's known,
solving what's not known, and then checking our work of what was
inferred against what the programmer claimed. Concretely:

1. All explicitly-annotated signatures in the mutually recursive set are
   introduced and let-generalized.
2. Then, inference type variables (`_`) and unannotated def signatures are
   introduced to the cycle, without generalization. The bodies of these
   defs, that are either unannotated or have inference variables, are
   solved.
3. The defs from step (2) are now let-generalized, since we now know
   that their types are consistent. At this point, all the defs in the
   cycle have their types introduced and let-generalized, but we still
   haven't checked the bodies of the defs froom step (1).
4. Check the bodies of explicitly-annotated defs in recursive set. This
   might materially affect the actual types in the signature, for
   example do to fixpoint-fixing or alias expansion.
5. As a result of (4) possibly changing the structure of the annotated
   type, and because the previous annotated types in (1) were introduced
   at a lower rank, we now re-introduce and re-generalize the solved def
   types, in the same we did in step (3).
5. The rest of the program is solved.

Now, a very important thing here is that the annotation signature
introduced for (1) consists of different type variables than the
annotation signature introduced in (5). The reason is that they live at
different ranks. Prior to this patch we were not explicilty doing so;
this commit ensures that we do.
2023-04-10 16:31:00 -05:00
Ayaz Hafiz
67364e1a42
Migrate polymorphic lambda set specialization tests 2023-04-02 13:12:51 -05:00
Ayaz Hafiz
2dcafffb46
Migrate couple more tests 2023-04-02 12:53:06 -05:00
Ayaz Hafiz
2f43aad8d0
Move uitests to their own crate 2023-04-02 09:11:31 -05:00