Commit graph

1810 commits

Author SHA1 Message Date
Ayaz Hafiz
cf8409dfaa
Remove private tag variants 2022-04-25 11:38:54 -04:00
Ayaz Hafiz
b796b68df7
Remove dead code 2022-04-25 11:00:50 -04:00
Ayaz Hafiz
b6383f81ee
Numbers are opaques 2022-04-25 10:59:42 -04:00
Ayaz Hafiz
5d1dd81e93
Reuse symbol when opaque type wraps a known symbol
Opaques decay immediately into their argument during codegen, so we need
to handle something that's effectively variable aliasing correctly.

This bug popped up while migrating all current private tags to opaques.
2022-04-23 14:37:52 -04:00
Ayaz Hafiz
3eb7824c7a
Typos 2022-04-22 17:57:02 -04:00
Ayaz Hafiz
5dfe44c72d
Render nullable wrapped tag unions that pass through aliases 2022-04-22 17:57:01 -04:00
Ayaz Hafiz
b61481c6e7
Try another strategy - fix recursion vars during typechecking 2022-04-22 17:57:01 -04:00
Ayaz Hafiz
02d5cd7885
Deal with recursive pointers that pass through non-recursive layouts 2022-04-22 17:57:01 -04:00
Folkert de Vries
2cc8e95198
Merge pull request #2901 from rtfeldman/vec-map
VecMap
2022-04-21 09:16:38 +02:00
Ayaz Hafiz
0387eeed23
Make sure we're generating correct code with has annotations 2022-04-20 17:45:41 -04:00
Folkert
8b144c446d
remove PartialEq for a bunch of types that we should not compare 2022-04-20 16:58:30 +02:00
Brian Carroll
f8156ffd53
Merge pull request #2834 from rtfeldman/wasm-list-map-n
Wasm List.mapN
2022-04-20 14:47:04 +01:00
Folkert
8692938fb3
Merge branch 'vecset-references' into builtins-in-roc 2022-04-17 19:39:03 +02:00
Folkert
e112f6ad2c
Merge remote-tracking branch 'origin/trunk' into builtins-in-roc 2022-04-16 21:01:51 +02:00
Folkert
1568a57de0
turn panic into runtime error 2022-04-16 19:42:08 +02:00
Ayaz Hafiz
e6b0d9a820
Fix typo 2022-04-15 10:54:35 -04:00
Ayaz Hafiz
95783e03a1
Handle aliasing of ability members 2022-04-15 10:21:35 -04:00
Ayaz Hafiz
b79b351136
The first ability... compiles 2022-04-14 16:50:41 -04:00
Ayaz Hafiz
eb81c68bcb
Pass abilities store to mono 2022-04-14 16:20:55 -04:00
Richard Feldman
4ea4aa4708
Merge pull request #2838 from rtfeldman/abilities-typechecking
Inference and checking for abilities
2022-04-13 22:03:44 -04:00
Richard Feldman
75ed66b4a8
Merge pull request #2843 from rtfeldman/i/2812
Propogate errors in record fields to layout error
2022-04-13 21:56:53 -04:00
Ayaz Hafiz
41dd7d0b4d
Specialize bodies with body var, not function var
I'm surprised code generation worked so well without this, before...

Closes #2818
2022-04-13 18:35:50 -04:00
Ayaz Hafiz
6343382af5
Propogate errors in record fields to layout error
Closes #2812

Unfortunately we don't have a great way to test this without scaffolding
a host since this happens while processing a variable exposed to the
host. In tests the root cause just yields a type error first and codegen
works, just bails during the runtime. But this works.
2022-04-13 16:23:13 -04:00
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
Brian Carroll
7b96e953ba wasm: Get List.map2 working 2022-04-11 14:36:31 +01:00
Folkert
6ef443d1b0
Merge remote-tracking branch 'origin/trunk' into builtins-in-roc 2022-04-10 19:14:00 +02: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
Ayaz Hafiz
a102a7497e
Support box/unbox for types that are typically only on the stack
Closes #2786
2022-04-09 16:22:01 -04:00
Folkert
166c949c3b
clippy 2022-04-09 12:24:12 +02:00
Folkert de Vries
5dc8c852e9
Merge pull request #2815 from rtfeldman/i/2811
Specialize polymorphic values before binding to pattern
2022-04-08 21:44:11 +02:00
Ayaz
69ed0b755a
Merge pull request #2804 from rtfeldman/abilities-canonicalization
Basic canonicalization, error checking for abilities
2022-04-08 12:00:23 -04:00
Richard Feldman
b777b88e1c
Drop unused arguments field from ZeroArgumentTag 2022-04-08 11:53:16 -04:00
Folkert
1d0f9e9192
Merge remote-tracking branch 'origin/trunk' into builtins-in-roc 2022-04-08 15:47:11 +02:00
Ayaz
33a5fc65ce
Update comment 2022-04-08 08:50:31 -04:00
ayazhafiz
94a5cd3559 Improve shadow errors 2022-04-07 22:38:20 -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
Richard Feldman
cd00a98636
Add toF32/64 and checked versions 2022-04-07 16:13:57 -04:00
Ayaz Hafiz
a12e40a310
Specialize polymorphic values before binding to pattern
Closes #2811
2022-04-07 14:03:29 -04:00
Brian Carroll
2b74e55240 Merge branch 'trunk' of github.com:rtfeldman/roc into wasm-higher-order-calls 2022-04-07 09:03:34 +01:00
Brian Carroll
51789f38c2 wasm: generate RC inc for higher order builtins 2022-04-05 00:02:05 +01:00
Folkert
68536e4026
Merge remote-tracking branch 'origin/trunk' into list-str-capacity 2022-04-04 19:55:04 +02:00
Folkert
0dd2cec09a
update with new clippy lints 2022-03-31 19:34:51 +02:00
Folkert
61aeaefc76
a start with 32-bit linux support 2022-03-30 23:55:34 +02:00
Folkert
5a3be2adf4
give correct stack size without alignment for tags 2022-03-30 19:18:16 +02:00
Folkert
fd209f90ff
fix bug where incorrect stack size is given 2022-03-30 17:25:28 +02:00
Folkert
c73c01aa34
Merge remote-tracking branch 'origin/trunk' into list-str-capacity 2022-03-30 14:07:17 +02:00
Folkert
71c11784a0
step 1: Deriv works and has no valgrind problems 2022-03-26 17:56:56 +01:00
Folkert
269d31b9ae
Revert "void type is not passed by-reference"
This reverts commit 0d89b9f37f.
2022-03-26 13:43:28 +01:00
Folkert
0d89b9f37f
void type is not passed by-reference 2022-03-26 13:13:25 +01:00
Folkert
7b221d6115
Merge branch 'simplify-identids' into builtins-in-roc 2022-03-22 22:25:55 +01:00