Commit graph

308 commits

Author SHA1 Message Date
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
Folkert de Vries
7675e0232b
Merge pull request #2819 from rtfeldman/zero-arg-tag
Drop unused `arguments` field from `ZeroArgumentTag`
2022-04-10 15:18:03 +02:00
Richard Feldman
e9acbe983f
Use array over vec for exists_many 2022-04-09 10:09:03 -04:00
Richard Feldman
dd56fdb61c
Fix regression with ZeroArgumentTag constraint gen
Turns out it can't share quite that much code with Tag,
because doing so skips the important function-based
constraints.
2022-04-08 21:31:19 -04:00
Richard Feldman
b2ff785a5e
Another clip bites the clip 2022-04-08 19:56:43 -04:00
Richard Feldman
45b5df3a23
Extract constrain_tag helper function 2022-04-08 11:52:57 -04:00
Ayaz Hafiz
73bfff699f Handle symbols that shadow ability member definitions
Just add the shadowing symbol for now. We'll handle checking that a
specialization's type matches the member's type definition in a later
pass, during typechecking.
2022-04-07 17:21:17 -04:00
Folkert
7b86a4b29e
optimize variable substitution in instantiate_rigids 2022-03-21 23:57:40 +01:00
hafiz
418e71e95c
Merge pull request #2755 from rtfeldman/dense-let-constraints
Constraint gen tweaks
2022-03-19 20:39:55 -04:00
Folkert
a1dbdf34d5
simplify empty let constraint 2022-03-19 23:41:56 +01:00
Folkert
a20a828ee1
refactor typed function constraint gen 2022-03-19 23:41:33 +01:00
Folkert
6aaef49aa7
don't create IsOpenType constraint for obvious non-types 2022-03-19 21:40:16 +01:00
Folkert
9b63e6a3a9
simplify IntroducedVariables 2022-03-18 23:47:39 +01:00
Folkert
b1612384c7
implement constrain crate 2022-03-17 19:17:52 +01:00
ayazhafiz
3da34fc843 Report unbound type variables in aliases, opaques
Closes #2726
2022-03-14 17:42:45 -05:00
Richard Feldman
422a88eced
Merge pull request #2722 from rtfeldman/various-bug-fixes
Various recently filed bug fixes
2022-03-13 22:18:39 -04:00
ayazhafiz
5670fe06cd Deal with destructuring tag unions behind opaques correctly
Closes #2702
2022-03-13 18:44:38 -05:00
Folkert
872d32652a
remove clone, yay 2022-03-13 22:58:16 +01:00
Folkert
f7ba9918fa
use equal_types_with_storage in opaque type constraining 2022-03-13 22:54:13 +01:00
Folkert
80af910c4f
use equal_types_with_storage in tag constraining 2022-03-13 22:53:22 +01:00
Folkert
7df4465a6e
use equal_types_with_storage in Lambda constraining 2022-03-13 22:47:25 +01:00
Folkert
f23945ad94
use equal_types_with_storage in record constraining 2022-03-13 22:47:07 +01:00
Folkert
e8bf5fa378
prevent clone for all function signatures 2022-03-13 22:35:56 +01:00
Folkert
97742b3238
clarify variable name 2022-03-13 17:59:44 +01:00
Folkert
61b4ee054a
rename function 2022-03-13 13:54:03 +01:00
Folkert
f97b10c6f3
clarify why builtins are skipped 2022-03-13 13:51:25 +01:00
Folkert
ed247c9da3
Merge remote-tracking branch 'origin/trunk' into type-checking-storage-subs 2022-03-13 13:43:00 +01:00
Folkert
8b2c1707d4
don't even create a type if we only need a variable 2022-03-13 02:12:45 +01:00
Folkert
b3d9f9c2de
use EitherIndex<Type, Variable> to halve number of types stored 2022-03-13 01:46:49 +01:00
Folkert
e463afe0d9
comments on datastructures in module.rs 2022-03-12 13:43:26 +01:00
Folkert
49408d3a56
fix reporting tests 2022-03-11 22:56:29 +01:00
Folkert
26953c0420
move stdlib solved type usage to use site 2022-03-11 22:01:25 +01:00
Folkert
20ae9ff1e3
hollow out ConstrainableImports 2022-03-11 21:29:50 +01:00
Folkert
9333d0a0e0
remove solved types from ExposedModuleTypes 2022-03-11 21:06:12 +01:00
Folkert
18d7f32aa3
do nothing, prepare for refactor 2022-03-11 21:03:55 +01:00
Folkert
afcd176d58
clone storage subs less 2022-03-11 20:56:13 +01:00
Folkert
c79ecec56e
make SubsByModule opaque 2022-03-11 20:16:55 +01:00
Folkert
d4da4fed88
cleanup 2022-03-11 19:41:30 +01:00
Folkert
30e7d94c95
clarify old constraint gen is now just for the builtins 2022-03-11 19:25:42 +01:00
Folkert
aebb3a162e
it's alive! 2022-03-11 17:27:44 +01:00
Folkert
9054546d27
move things in place to go storage_subs -> subs 2022-03-11 10:49:22 +01:00
Folkert
973e3ac7ed
bring storage subs into solve again 2022-03-11 10:28:10 +01:00
Folkert
78f5526db3
add storage subs to ExposedModuleTypes 2022-03-11 10:15:33 +01:00
hafiz
de9da2d8a5
Merge pull request #2657 from rtfeldman/i/2567
Register accessor closures when they are bound
2022-03-06 12:59:55 -05:00
ayazhafiz
0692caf7ba Consolidate Accessor data 2022-03-06 11:07:31 -05:00
ayazhafiz
3bff99b0a2 Register accessor closures when they are bound
Previously we only registered record accessor closures in anonymous
contexts, where we assume they must already be specialized based on the
surrounding contexts. This is not true in general since one might bind
an accessor to a name.

Closes #2567
2022-03-06 10:53:12 -05:00
Folkert
9f11245b22
add comment 2022-03-05 22:29:30 +01:00
Folkert
6380a9edf9
remove collection that went unused 2022-03-05 22:29:22 +01:00
Folkert
587c89e003
use empty array for empty DefTypes sequence 2022-03-05 21:51:20 +01:00
Folkert
6392e42166
prevent frequent expectation cloning 2022-03-05 21:32:22 +01:00