Commit graph

971 commits

Author SHA1 Message Date
Ayaz Hafiz
03463a2a5e
Naive string decoding 2022-08-01 09:56:59 -05:00
Ayaz Hafiz
d1880cae76
Add a comment 2022-08-01 09:50:18 -05:00
Ayaz Hafiz
e1c8b3c9b0
Format Json.roc 2022-08-01 09:48:38 -05:00
Ayaz Hafiz
c85c865b05
Bool decoding 2022-08-01 09:47:42 -05:00
Ayaz Hafiz
a00953128d
Use asciiByte helper 2022-08-01 09:47:35 -05:00
Ayaz Hafiz
e00ebbead7
Properly parse floats 2022-08-01 09:32:05 -05:00
Ayaz Hafiz
b8328c2b5b
Remove stray dbgs 2022-08-01 09:09:37 -05:00
Ayaz Hafiz
60601dada2
Remove mono test 2022-08-01 09:08:32 -05:00
Ayaz Hafiz
f06ed1a647
Add FIXME comments 2022-08-01 09:08:19 -05:00
Ayaz Hafiz
b516bf0da8
Add basis decoder test, using the standard library! 2022-08-01 09:06:30 -05:00
Ayaz Hafiz
fd62c0172b
Add LateResolver to late_solve to extract types from world abilities 2022-08-01 09:05:58 -05:00
Ayaz Hafiz
2adde2351f
Add subs to member_parent_and_signature_var 2022-08-01 09:05:16 -05:00
Ayaz Hafiz
4f14c0a8ea
make with_module_exposed_type read-only 2022-08-01 09:04:12 -05:00
Ayaz Hafiz
b72c8705e5
Add an AbilityResolver trait for abilities stores and views 2022-08-01 08:09:24 -05:00
Ayaz Hafiz
6a4a3e2c60
Expose Json.fromUtf8 2022-08-01 08:09:23 -05:00
Ayaz Hafiz
10ce5d0615
Implement Json fromBytes without let-generalization 2022-08-01 08:09:23 -05:00
Ayaz Hafiz
3fdde9e8f0
Stub out a decoder implementation for Json 2022-08-01 08:09:23 -05:00
Ayaz Hafiz
623f5698ac
Qualify Encode.custom 2022-08-01 08:09:23 -05:00
Ayaz Hafiz
df3ee468c6
Remove unneeded imports 2022-08-01 08:09:23 -05:00
Ayaz Hafiz
b602c1fa2f
Qualify JSON encode names 2022-08-01 08:09:23 -05:00
Ayaz Hafiz
41af6d96a8
Remove unnecessary comment from Json module 2022-08-01 08:09:23 -05:00
Ayaz Hafiz
fc71e3df04
Add Decode to the load graph 2022-08-01 08:09:22 -05:00
Ayaz Hafiz
1f4099449d
Add Decoder module symbol 2022-08-01 08:09:22 -05:00
Ayaz Hafiz
de1588e760
Add the Decode module 2022-08-01 08:09:22 -05:00
Ayaz Hafiz
f275a943d0
Disable test on wasm3 for now 2022-08-01 08:06:44 -05:00
Ayaz Hafiz
95a439d402
Turn on all abilities tests for wasm 2022-08-01 08:06:39 -05:00
Ayaz Hafiz
e830ed281f
Update mono tests 2022-07-29 14:55:41 -04:00
Ayaz Hafiz
4657a957f7
When storing variables, merge them directly with the target rather than unifying
When we unify two variables that end up merged, the rank of the
resulting content is the lower of the two variables being merged. But
during storage, we really do mean, take the target descriptor of the
type we're merging against, and don't try to lower to a
possibly-generalized rank! This fixes a couple bugs I didn't even
realize were present!
2022-07-29 14:53:14 -04:00
Ayaz Hafiz
5f115685e4
Make sure to name closure variables correctly 2022-07-29 14:18:47 -04:00
Ayaz Hafiz
3b38228c36
Fix infer query indentation 2022-07-29 14:18:47 -04:00
Ayaz Hafiz
a62048f799
Typo 2022-07-29 14:18:47 -04:00
Ayaz Hafiz
1851ee09f8
Add some more comments on the behavior of compaction-mode unification 2022-07-29 14:18:47 -04:00
Ayaz Hafiz
ff4b5f58ab
Avoid over-eager disjoint variable merging during lambda set compaction
During the unspecialized lambda set compaction procedure, we might end
up trying to merge too many disjoint variables during unspecialized
lambda unification. Avoid doing so, by checking if we're in the
compaction procedure.
2022-07-29 14:18:47 -04:00
Ayaz Hafiz
bda52b0d39
Implement unspecialized lambda set unification as list merging 2022-07-29 14:18:47 -04:00
Ayaz Hafiz
fe864a445d
Add a test for big encoders enabled by disjoint specialization variables 2022-07-29 14:18:47 -04:00
Ayaz Hafiz
7926499900
Implement disjoint type variable handling in the lambda set specialization algorithm
This completes the last known hole I am aware of in the current
lambda set specialization algorithm.

Closes #3421
2022-07-29 14:18:46 -04:00
Ayaz Hafiz
1976e435a0
Turn a couple more solve tests back on 2022-07-29 08:43:19 -04:00
Ayaz Hafiz
41eb3ad9a4
Separate ability members and their specializations in reference checking 2022-07-29 08:43:19 -04:00
Ayaz Hafiz
7a4c57d3dc
Clippy 2022-07-29 08:43:19 -04:00
Ayaz Hafiz
4049eb6780
Remove unused OpportunisticResolve field 2022-07-29 08:43:19 -04:00
Ayaz Hafiz
31220d5598
Fix spelling 2022-07-29 08:43:19 -04:00
Ayaz Hafiz
f145f29b1b
Make sure records don't de-generalize function types, fixing ability let-generalization
Closes #3641
2022-07-29 08:43:19 -04:00
Ayaz Hafiz
ce8c8f7264
Update solve test
Use named recursive calls for now in ability members
2022-07-29 08:43:18 -04:00
Ayaz Hafiz
f2d4bf20ba
Collect awaited lambda set specializations to be solved when a specialization is known
Despite our best efforts, sometimes we still can't specialize lambda
sets on the fly, if a specialization lambda set's specialization type
isn't yet well-known! This commit adds an `AwaitingSpecializations`
data structure to keep track of the lambda sets blocked for
specialization behind a specialization's full resolution in the module.
After the specialization is resolved, its blocked lambda sets can be
eagerly compacted.
2022-07-29 08:43:18 -04:00
Ayaz Hafiz
350d9cd59b
Simplify opportunistic resolution
We don't need to unify the type state anymore because resolved able
variables are determined only by one type variable.
2022-07-29 08:43:18 -04:00
Ayaz Hafiz
403b2b14b7
Add remove_dependent_unspecialized_lambda_sets to UlsOfVar 2022-07-29 08:43:18 -04:00
Ayaz Hafiz
5a42acc11c
Debug specialization keys 2022-07-29 08:43:18 -04:00
Ayaz Hafiz
240a48bc1c
De-duplicate unspecialized lambda sets by root var 2022-07-29 08:43:17 -04:00
Ayaz Hafiz
76fe397aa1
Consolidate exposed types and derived module in a derived environment 2022-07-29 08:43:17 -04:00
Ayaz Hafiz
0ec92c12f7
Move lambda set specialization to its own module in solve 2022-07-29 08:43:16 -04:00