Commit graph

1207 commits

Author SHA1 Message Date
Ayaz
11f0de21e1
Merge pull request #3781 from roc-lang/dependabot/cargo/insta-1.18.2
Bump insta from 1.15.0 to 1.18.2
2022-08-13 13:36:32 -07:00
Ayaz Hafiz
c0969e5ff8
Reuse allocations in fixing closures 2022-08-13 10:38:53 -07:00
Ayaz Hafiz
d19c9107b2
swap_remove rather than removing in place 2022-08-13 10:30:58 -07:00
Ayaz Hafiz
7215acdbac
Ensure that field layouts passed to closure unwrapping are sorted 2022-08-13 10:25:18 -07:00
Ayaz Hafiz
9ffe6eb6dd
Print function argument layouts in pretty mode 2022-08-13 10:25:18 -07:00
Ayaz Hafiz
991b99250c
Clippy 2022-08-13 10:25:18 -07:00
Ayaz Hafiz
6bcd682dde
Support captures between mutually recursive closures 2022-08-13 10:25:18 -07:00
Ayaz Hafiz
4b55416ca1
Add test for outer scope transient captures 2022-08-13 10:25:18 -07:00
Ayaz Hafiz
5ead673cfc
Add gen tests for transient closure captures 2022-08-13 10:25:18 -07:00
Ayaz Hafiz
e97ce32b88
Fixup transient closure captures during canonicalization
Closure captures can be transient, but previously, we did not handle
that correctly. For example, in

```
x = ""
inner = \{} -> x
outer = \{} -> inner {}
```

`outer` captures `inner`, but `inner` captures `x`, and in the body of
`outer`, we would not construct the closure data for `inner` correctly
before calling it.

There are a couple ways around this.

1. Update mono to do something when we are passed the captured
   environment of a closure, rather than attempting to construct a
   call-by-name's captured environment before callign it.
2. Fix-up closures during canonicalization to remove captured closures
   that themselves capture, and replace them with their captures.

This patch does (2), since (1) is much more involved and is not likely
to bring a lot of wins. In general I think it's reasonable to expect
captured environments, even if transient, to be fairly shallow, so I
don't think this will produce very large closure environments.

Closes #2894
2022-08-13 10:25:17 -07:00
dependabot[bot]
7ab742dd1a
Bump insta from 1.15.0 to 1.18.2
Bumps [insta](https://github.com/mitsuhiko/insta) from 1.15.0 to 1.18.2.
- [Release notes](https://github.com/mitsuhiko/insta/releases)
- [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mitsuhiko/insta/compare/1.15.0...1.18.2)

---
updated-dependencies:
- dependency-name: insta
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 16:49:28 +00:00
Richard Feldman
99a22d6bbd
Merge pull request #3747 from roc-lang/i2419
Add regression tests for #2419
2022-08-12 19:53:53 -04:00
Ayaz Hafiz
89457f9faf
Add Wasm32Result for Infallible 2022-08-12 15:42:20 -07:00
Ayaz Hafiz
aa26a0da44
Add regression tests for #2419
Closes #2419
2022-08-12 15:42:19 -07:00
dependabot[bot]
f0c83f730b
Bump im from 14.3.0 to 15.1.0 in /crates/compiler/parse/fuzz
Bumps [im](https://github.com/bodil/im-rs) from 14.3.0 to 15.1.0.
- [Release notes](https://github.com/bodil/im-rs/releases)
- [Changelog](https://github.com/bodil/im-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bodil/im-rs/compare/v14.3.0...v15.1.0)

---
updated-dependencies:
- dependency-name: im
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-12 21:09:40 +00:00
Richard Feldman
58c3575e44
Fix mono tests 2022-08-12 15:28:05 -04:00
Richard Feldman
7b2c1a7e64
s/trunk/main/g 2022-08-12 15:24:37 -04:00
Richard Feldman
97e2900bf5
s/rtfeldman/roc-lang/g in links to GitHub repos 2022-08-12 15:24:09 -04:00
Richard Feldman
641daab02c
Merge pull request #3754 from rtfeldman/avx512_valgrind_fix
valgrind fix for newer intel processors
2022-08-12 10:59:01 -04:00
Anton-4
72e60bceea
valgrind fix for newer intel processors 2022-08-12 12:06:31 +02:00
Anton-4
720f02372c
use most compatible bash shebang 2022-08-12 11:45:02 +02:00
Folkert de Vries
0798f787c5
Merge pull request #3736 from rtfeldman/i3687
Creation of a record whose type has an optional value is an error
2022-08-11 15:51:41 +02:00
Folkert
5b10ebeeb7
Merge remote-tracking branch 'origin/trunk' into i2453 2022-08-11 10:44:26 +02:00
Folkert de Vries
448c8ced53
Merge pull request #3749 from rtfeldman/i2165
Regression test for #2165
2022-08-11 10:23:45 +02:00
Folkert de Vries
ae0e90c8f3
Merge pull request #3738 from rtfeldman/i3444
Layout generation for recursive lambda sets
2022-08-11 10:22:07 +02:00
Ayaz Hafiz
a1445c25bd
Update solve test 2022-08-10 20:24:20 -07:00
Ayaz Hafiz
b3d4c8f09b
Parse explicit optional field types as rigid optionals 2022-08-10 20:24:19 -07:00
Ayaz Hafiz
b69051c90e
Print rigid optional types correctly 2022-08-10 20:24:19 -07:00
Ayaz Hafiz
b311dc4741
Remove stray dbg 2022-08-10 20:24:19 -07:00
Ayaz Hafiz
81bb889e93
Add RigidOptional record field variant 2022-08-10 20:24:18 -07:00
Ayaz Hafiz
d8c18cc898
Ignore argument 2022-08-10 20:23:17 -07:00
Ayaz Hafiz
10288d3430
Fix compile errors 2022-08-10 16:10:32 -07:00
Ayaz Hafiz
c423e3f5ce
Regression test for #2165
Closes #2165
2022-08-10 16:01:56 -07:00
Ayaz Hafiz
fdb79da5a8
Report anonymous functions as "this function" rather than symbol name
Closes #2453

Thanks for the assist @chris-packett
2022-08-10 15:26:52 -07:00
Ayaz Hafiz
d8e2ca7b1e
Add test for when conditional polymorphic expr becomes a float
Closes #2884
2022-08-10 13:20:07 -07:00
Richard Feldman
0105fa4c4a
Merge pull request #3733 from rtfeldman/expect-fx
Expect fx
2022-08-09 23:03:37 -04:00
Ayaz Hafiz
40c73b4138
Add more names 2022-08-09 18:13:25 -07:00
Ayaz Hafiz
bfd49299e0
Clippy 2022-08-09 17:45:52 -07:00
Ayaz Hafiz
ee188b8e85
use layout_from_recursive_union to generate lambda set recursive layouts 2022-08-09 16:45:35 -07:00
Ayaz Hafiz
4d5331557c
Add more tests for recursie lambda sets 2022-08-09 16:12:30 -07:00
Ayaz Hafiz
86c6d339c3
Choose merged closure var based on whether it's recursive or not 2022-08-09 16:08:24 -07:00
Ayaz Hafiz
3f1e11f920
Recursive vars in occurs check can happen anywhere in the chain 2022-08-09 16:07:59 -07:00
Ayaz Hafiz
f20d1ac59a
Typo 2022-08-09 15:30:28 -07:00
Ayaz Hafiz
021cc6e506
Support non-nullable-unwrapped recursive lambda sets 2022-08-09 15:17:16 -07:00
Ayaz Hafiz
c1a7e7893b
Simplify combine 2022-08-09 15:17:09 -07:00
Ayaz Hafiz
4bfac11624
Remove mono test in favor of gen tests 2022-08-09 14:58:57 -07:00
Ayaz Hafiz
1a09f3e0e6
Make sure checking captures layouts chases recursion pointers 2022-08-09 14:57:59 -07:00
Ayaz Hafiz
ba2768c9b0
Build member layouts for recursive lambda sets 2022-08-09 14:44:09 -07:00
Ayaz Hafiz
a4bb6879bc
Resolve recursive pointer lambda set layouts when unpacking captures 2022-08-09 14:43:36 -07:00
Ayaz Hafiz
549b00d327
Handle recursive variables in building lambda set representations 2022-08-09 14:11:02 -07:00