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