Commit graph

6883 commits

Author SHA1 Message Date
ayazhafiz
395e0a33e0 Make sure unit structs are always units 2022-02-21 14:10:46 -05:00
ayazhafiz
148dbb4efe Unnecessary reference 2022-02-21 14:10:46 -05:00
ayazhafiz
475be2363c Add a gen test for #2535 2022-02-21 14:10:46 -05:00
ayazhafiz
dfc384aa1f Make mono test output prettier 2022-02-21 14:10:45 -05:00
ayazhafiz
e52d427ac8 Hash record field name order in generated layouts
Closes #2535

See the referenced issue for longer discussion - here's the synopsis.
Consider this program

```
app "test" provides [ nums ] to "./platform"

alpha = { a: 1, b: 2 }

nums : List U8
nums =
    [
        alpha.a,
        alpha.b,
    ]
```

Here's its IR:

```
procedure : `#UserApp.alpha` {I64, U8}
procedure = `#UserApp.alpha` ():
    let `#UserApp.5` : Builtin(Int(I64)) = 1i64;
    let `#UserApp.6` : Builtin(Int(U8)) = 2i64;
    let `#UserApp.4` : Struct([Builtin(Int(I64)), Builtin(Int(U8))]) = Struct {`#UserApp.5`, `#UserApp.6`};
    ret `#UserApp.4`;

procedure : `#UserApp.nums` List U8
procedure = `#UserApp.nums` ():
    let `#UserApp.7` : Struct([Builtin(Int(I64)), Builtin(Int(U8))]) = CallByName `#UserApp.alpha`;
    let `#UserApp.1` : Builtin(Int(U8)) = StructAtIndex 1 `#UserApp.7`;
    let `#UserApp.3` : Struct([Builtin(Int(I64)), Builtin(Int(U8))]) = CallByName `#UserApp.alpha`;
    let `#UserApp.2` : Builtin(Int(U8)) = StructAtIndex 1 `#UserApp.3`;
    let `#UserApp.0` : Builtin(List(Builtin(Int(U8)))) = Array [`#UserApp.1`, `#UserApp.2`];
    ret `#UserApp.0`;
```

What's happening is that we need to specialize `alpha` twice - once for the
type of a narrowed to a U8, another time for the type of b narrowed to a U8.

We do the specialization for alpha.b first - record fields are sorted by
layout, so we generate a record of type {i64, u8}. But then we go to
specialize alpha.a, but this has the same layout - {i64, u8} - so we reuse
the existing one! So (at least for records), we need to include record field
order associated with the sorted layout fields, so that we don't reuse
monomorphizations like this incorrectly!
2022-02-21 14:10:45 -05:00
Brendan Hansknecht
74daec84df
Merge pull request #2472 from rtfeldman/add_Int.toInt_builtins
Add `{Int *}.to{Int *}` builtins
2022-02-21 18:03:14 +00:00
ayazhafiz
e22c9d8168 Fix a typo 2022-02-21 10:29:24 -05:00
Brian Carroll
e8571de1ae
Merge pull request #2517 from rtfeldman/repl-www
Web REPL initial version
2022-02-21 13:58:23 +00:00
ayazhafiz
543ca97a1c Remove spaces around var in record update
Closes #2534
2022-02-20 20:17:29 -05:00
Brian Carroll
603c98d1d9 wasm tests: use wasmer .unwrap_i32 2022-02-20 09:05:08 +00:00
Brian Carroll
a75aa52b91 repl_test: write Rust replacements for JS functions 2022-02-19 23:29:06 +00:00
ayazhafiz
ee37d8c4e0 Disable unimplemented int casts on wasm 2022-02-19 17:08:20 -05:00
ayazhafiz
aa8b6e3393 Clippy 2022-02-19 16:28:36 -05:00
ayazhafiz
25b355eb38 Fix cast tests 2022-02-19 16:24:49 -05:00
ayazhafiz
13067f2908 Implement Num.toNNNChecked
Closes #2411
2022-02-19 16:20:21 -05:00
Folkert de Vries
1b664741db
Merge pull request #2528 from rtfeldman/roc-std-list-str-refactor
Roc std list str refactor
2022-02-19 21:53:19 +01:00
Brian Carroll
718f0a85c6
Merge pull request #2524 from rtfeldman/gen-dev/cleanup
Gen dev/cleanup
2022-02-19 19:34:38 +00:00
Brendan Hansknecht
0dae9014fe Update comments 2022-02-19 10:59:32 -08:00
ayazhafiz
d90915a8cd Implement Num.to* builtins
Just wrap over Num.intCast
2022-02-19 11:28:41 -05:00
Jan Van Bruggen
e12d98af98 WIP: Start adding new Int.toInt builtins 2022-02-19 11:28:12 -05:00
Jan Van Bruggen
1760db2a0c Add docs for new Int.toInt builtins 2022-02-19 11:28:12 -05:00
Folkert
637360fad5
clippy 2022-02-19 16:50:42 +01:00
Folkert de Vries
4990fb3a3d
Merge pull request #2525 from rtfeldman/time-dev
Add timing info for dev and wasm backend
2022-02-19 15:04:11 +01:00
Brendan Hansknecht
f3ef21773f Add timing info for dev and wasm backend 2022-02-19 00:09:27 -08:00
Brendan Hansknecht
4e4dcef1b9 fix missed register freeing 2022-02-18 22:55:19 -08:00
Brendan Hansknecht
6c0230ae4f fix typos 2022-02-18 22:10:15 -08:00
Brendan Hansknecht
427f3e2b68 fix typo 2022-02-18 21:35:30 -08:00
Brendan Hansknecht
b63d62418b clippy 2022-02-18 21:30:58 -08:00
Brendan Hansknecht
469ecbe6c5 remove todo and use doc comments in more places 2022-02-18 21:29:18 -08:00
Brendan Hansknecht
7df6b34a21 correct arg storing index 2022-02-18 21:25:09 -08:00
Brendan Hansknecht
99f6dd7e7b fully integrate storage manager removing old code 2022-02-18 21:14:01 -08:00
Brendan Hansknecht
f564514d9c stop trying to free symbols that don't exist due to being call args 2022-02-18 16:45:34 -08:00
Brendan Hansknecht
c81a1c7c2c remove redundant move 2022-02-18 16:34:07 -08:00
Brendan Hansknecht
f16c0f7db5 fix joinpoint and returning issues 2022-02-18 16:15:10 -08:00
Brendan Hansknecht
37afe28c98 fix join point param loading 2022-02-18 15:03:21 -08:00
Brendan Hansknecht
1f8ac3e150 refactor join points and jumps 2022-02-18 14:46:31 -08:00
Brendan Hansknecht
554db4556b refactor out loading values from storage or internal error 2022-02-18 13:25:39 -08:00
Folkert
5582644166
use str/list helpers to prepare for adding capacity 2022-02-18 22:23:05 +01:00
Brendan Hansknecht
b00ef5ea4f add JoinPointId tracking for parameters 2022-02-17 23:17:17 -08:00
Brendan Hansknecht
fb589f7dc5 removing owning symbol map, now delt with by storage manager 2022-02-17 23:06:55 -08:00
Brendan Hansknecht
b6a61aa1cd update todo 2022-02-17 22:46:41 -08:00
Brendan Hansknecht
9fa420f871 move storing args to use storage manager 2022-02-17 22:41:34 -08:00
Brendan Hansknecht
d578dae3ef fix empty struct bug 2022-02-17 22:12:54 -08:00
Brendan Hansknecht
25f232ae0f fix minor typo 2022-02-17 22:09:46 -08:00
Brendan Hansknecht
2bcbb19f07 enable loading aligned referenced primitives 2022-02-17 22:08:35 -08:00
Brendan Hansknecht
907050ceaa convert loading args to storage manager 2022-02-17 21:52:41 -08:00
Brendan Hansknecht
76f03c722f add alignment dbg assert 2022-02-17 21:22:03 -08:00
Brendan Hansknecht
8eb1b09ff9 remove returns via arg pointer from the callconv interface 2022-02-17 21:21:07 -08:00
Brendan Hansknecht
d65a971508 add returning str and list 2022-02-17 21:17:56 -08:00
Brendan Hansknecht
cb64543476 add basic returned value loading 2022-02-17 21:08:28 -08:00