Commit graph

1685 commits

Author SHA1 Message Date
Ayaz Hafiz
2517695ce4
Fix deriving of hash ability for recursive tag unions 2022-10-05 12:01:02 -05:00
Ayaz
02b02901bc
Update crates/compiler/test_gen/src/gen_abilities.rs
Signed-off-by: Ayaz <20735482+ayazhafiz@users.noreply.github.com>
2022-10-04 18:58:30 -05:00
Ayaz Hafiz
c7bd4e1c1c
Support upcasting bools to ints in the wasm backend 2022-10-04 18:55:45 -05:00
Ayaz Hafiz
725054b8f3
Add TODO recursive tag union hashing test 2022-10-04 18:17:35 -05:00
Ayaz Hafiz
5389cdd87f
Add gen test for newtype, byte union, unit tag union hash deriving 2022-10-04 18:11:41 -05:00
Ayaz Hafiz
41c9985c53
Support newtypes and unit tag union hash deriving 2022-10-04 18:11:37 -05:00
Ayaz Hafiz
251b3865d9
Implement tag union discriminant extraction for byte- and newtype-variants 2022-10-04 18:04:46 -05:00
Ayaz Hafiz
00ca8f2f80
Add gen test for deriving hash for heterogenous tags 2022-10-04 17:28:35 -05:00
Ayaz Hafiz
ff70832068
Derive hash for tag unions with a discriminant 2022-10-04 17:19:30 -05:00
Ayaz Hafiz
5eb00c4f94
Generate derive keys for tags 2022-10-04 16:23:24 -05:00
Ayaz Hafiz
fd54cdfdd1
Low-level to extract discriminant from a tag union 2022-10-04 16:17:05 -05:00
Ayaz Hafiz
7421485973
Remove clone 2022-10-04 15:37:03 -05:00
Ayaz Hafiz
5870de54ae
Add gen tests for record hash deriving 2022-10-04 15:29:20 -05:00
Ayaz Hafiz
46f111c6dd
Add hash deriving for records 2022-10-04 15:23:41 -05:00
Ayaz Hafiz
ad4d98be9c
Add derive key generation for record hashing 2022-10-04 14:42:00 -05:00
Ayaz Hafiz
fd421c005d
Refactor hash immediate tests 2022-10-04 14:40:53 -05:00
Ayaz Hafiz
6d7f664194
Add test for hashing list of lists 2022-10-04 14:40:21 -05:00
Ayaz Hafiz
c2c15d3ee1
Skip pending test on wasm 2022-10-04 14:39:55 -05:00
Ayaz Hafiz
085c73dffe
Clippy 2022-10-04 14:10:29 -05:00
Ayaz Hafiz
f2c30a699c
Remove stray dbg 2022-10-04 14:09:40 -05:00
Ayaz Hafiz
42ddcb70df
Add derive test for List of strings 2022-10-04 14:09:40 -05:00
Ayaz Hafiz
5b833e57b5
Support derivation of Hash for Str and List 2022-10-04 14:09:40 -05:00
Ayaz Hafiz
294244ae25
Make sure flex unifies with rigid-able vars correctly 2022-10-04 14:09:40 -05:00
Ayaz Hafiz
715d88510c
Add tests for immediates of the Hash ability 2022-10-04 14:09:40 -05:00
Ayaz Hafiz
8844cd256e
Make sure Num.minU128/Num.maxU128 is properly exposed 2022-10-04 14:09:40 -05:00
Ayaz Hafiz
427528e659
Add deriving of immediates for the Hash ability 2022-10-04 14:09:39 -05:00
Ayaz Hafiz
f68cb3b0ed
Flip order of hash signature 2022-10-04 12:14:07 -05:00
Ayaz Hafiz
e9efc95425
Obligation checking for the Hash ability
This implements type-level checks that types can and cannot implement
the `Hash` ability.

Part of #4195
2022-10-04 10:51:14 -05:00
Ayaz Hafiz
ca4ee908f8
Avoid shadowing Hash in mono tests 2022-10-04 10:23:39 -05:00
Ayaz Hafiz
1c8ed27e58
Avoid Hash shadowing in abilities tests 2022-10-04 10:23:09 -05:00
Ayaz Hafiz
eadbc0912a
Update the compiler to be aware of Hash 2022-10-04 10:22:22 -05:00
Ayaz Hafiz
76510ec323
Add Hash.roc builtin module 2022-10-04 10:14:29 -05:00
Ayaz Hafiz
f6c21cc933
Correctly format abilities with comments 2022-10-04 10:03:51 -05:00
Ayaz
f145610be0
Merge pull request #4125 from roc-lang/fix-module-name-mismatches
Assorted QoL improvements to incorrect module importing
2022-10-04 06:37:19 -05:00
Ayaz
6ff59f6dc7
Merge pull request #4182 from roc-lang/i4151
Correctly format nested pipeline operators
2022-10-03 14:53:02 -05:00
Ayaz Hafiz
bbb2083dd6
Correctly format nested pipeline operators
Closes #4151
2022-10-03 14:18:17 -05:00
Ayaz Hafiz
92b754f292
Illegal self recursion on toplevel defs
Closes #4153
2022-10-03 13:14:56 -05:00
Richard Feldman
2764ebb94c
Merge pull request #4146 from roc-lang/format-char-with-spaces
Properly format characters with escape sequences
2022-10-02 23:09:10 -07:00
Ayaz Hafiz
ec40c3aa0e
Derive Copy 2022-10-02 21:42:43 -05:00
Ayaz Hafiz
5bf71edf0c
Some cleanup 2022-10-02 21:42:28 -05:00
Ayaz Hafiz
e1aadbc6ef
Add clone comment 2022-10-02 21:41:10 -05:00
Ayaz Hafiz
a6cf21dcf9
Revert "Lints"
This reverts commit f7e85b5295a44217bde9b6b83d188d84ee863d0c.
2022-10-02 21:39:48 -05:00
Ayaz Hafiz
f3689b1146
Fmt 2022-10-02 21:38:04 -05:00
Ayaz Hafiz
852fd0a127
Lints 2022-10-02 21:38:04 -05:00
Ayaz Hafiz
0cc9ea4b05
Detect and report module names that don't match what they are used as
Prior to this commit, if you had a module structure like

```
| - A.roc
| - Dep
    | - B.roc
```

where `B.roc` was defined as

```
interface B exposes [] imports []
```

and `A.roc` was defined as

```
interface A exposes [] imports [Dep.B]
```

The compiler would hang on you. The reason is that even though we expect
`B` to be named `Dep.B` relative to `A`, that would not be enforced.

With this patch, we now enforce such naming schemes - a module must have
the namespaced name it is referenced by. Currently, we determine the
expected namespaced name by looking at how transitive dependencies of the
root module reference the module. In the future, once we have a package
ecosystem and a solid idea of "package roots", we can use the "package
root" to determine how a module should be named.

Closes #4094
2022-10-02 21:38:03 -05:00
Ayaz Hafiz
a5ebd7f477
Comments and optimizations for builtins 2022-10-02 21:38:03 -05:00
Ayaz Hafiz
5d649666fa
Detect and report module import cycles
Closes #3557
2022-10-02 21:38:03 -05:00
Ayaz Hafiz
c67be21636
Check that module names correspond to the paths they are defined in
Closes #3440
Closes #4050
2022-10-02 21:38:02 -05:00
Ayaz Hafiz
3883867b5c
Properly format characters with escape sequences
Ran into this just now
2022-10-02 17:10:34 -05:00
Ayaz Hafiz
877714e9c0
Unused imports in gen-abilities 2022-09-30 14:24:06 -05:00