Commit graph

3235 commits

Author SHA1 Message Date
Joshua Warner
174f7d5e4d
Fix bug in unifying records
This was leading us to have an infinitely-recursive type, which eventually causes layout to stack-overflow

Fixes #4739
2022-12-17 11:37:19 -08:00
Joshua Warner
a046428ce6
Add fuzzing for the formatter and fix bugs
This commit adds fuzzing for the (expr) formatter, with the same invariants that we use for fmt tests:
  * We start with text, which we parse
  * We format the AST, which must succeed
  * We parse back the AST and make sure it's identical igoring whitespace+comments
  * We format the new AST and assert it's equal to the first formatted version ("idempotency")

Interestingly, while a lot of bugs this found were in the formatter, it also found some parsing bugs.

It then fixes a bunch of bugs that fell out:
* Some small oversights in RemoveSpaces
* Make sure `_a` doesn't parse as an inferred type (`_`) followed by an identifier (parsing bug!)
* Call `extract_spaces` on a parsed expr before matching on it, lest it be Expr::SpaceBefore - when parsing aliases
* A few cases where the formatter generated invalid/different code
* Numerous formatting bugs that caused the formatting to not be idempotent

The last point there is worth talking further about. There were several cases where the old code was trying to enforce strong
opinions about how to insert newlines in function types and defs. In both of those cases, it looked like the goals of
(1) idempotency, (2) giving the user some say in the output, and (3) these strong opinions - were often in conflict.

For these cases, I erred on the side of following the user's existing choices about where to put newlines.

We can go back and re-add this strong opinionation later - but this seemed the right approach for now.
2022-12-17 09:52:09 -08:00
Richard Feldman
10c8523888
Handle FileProblem explicitly 2022-12-17 03:57:11 -05:00
Richard Feldman
ed0b07a62f
clippy 2022-12-17 03:35:39 -05:00
Richard Feldman
3e448fd2b4
Merge remote-tracking branch 'origin/main' into packages 2022-12-17 03:32:52 -05:00
Richard Feldman
b21a3a4fdb
Handle loading errors more consistently 2022-12-17 03:31:10 -05:00
Richard Feldman
7b85775ee6
Drop a dbg! 2022-12-16 12:30:38 -05:00
Richard Feldman
27fc823795
Drop a redundant Instant::now() 2022-12-16 12:27:22 -05:00
Brian Carroll
62269bf6c9
builtins: build the Wasm interpreter from inside run-wasm-tests.sh 2022-12-16 16:05:00 +00:00
Brian Carroll
4d5b7f8b73
wasm_interp: add a WasmModule to Instance so we don't have to pass it to call_export 2022-12-16 14:52:10 +00:00
Brian Carroll
86a82f8576
test_gen: disable roc_wasm_interp logging 2022-12-16 14:52:10 +00:00
Brian Carroll
b73e022336
test_gen: update WasiDispatcher 2022-12-16 14:52:10 +00:00
Brian Carroll
d389601035
Merge branch 'main' of github.com:roc-lang/roc into wasm_interp_test_gen 2022-12-16 14:50:09 +00:00
Brendan Hansknecht
faaa466c70
Merge pull request #4774 from roc-lang/enable-fuzzing
[simple PR] Enable fuzzing and sanitizers
2022-12-16 00:22:00 +00:00
Folkert de Vries
f550f049db
Merge pull request #4768 from roc-lang/expects-store-specialized-variable
Support using dbg/expect in polymorphic functions
2022-12-16 00:10:40 +01:00
Richard Feldman
e9e82ddc08
Merge pull request #4766 from roc-lang/remove-f128
remove F128
2022-12-15 17:59:48 -05:00
Richard Feldman
94818fc6cc
Create header messages for packages 2022-12-15 17:45:32 -05:00
Brendan Hansknecht
d33e0a9f19
add links to docs 2022-12-15 14:45:25 -08:00
Brendan Hansknecht
1878250e36
add message about supported sanitizers 2022-12-15 14:43:52 -08:00
Brendan Hansknecht
bf9a588acf
clippy 2022-12-15 08:49:44 -08:00
Brendan Hansknecht
4571b5b805
some minor cleanup 2022-12-15 08:39:33 -08:00
Brendan Hansknecht
a0622d57a2
ignore stderr print. They are warnings. 2022-12-15 08:29:10 -08:00
Brendan Hansknecht
5ea5208070
also remove unnecessary command from debug path 2022-12-15 08:29:10 -08:00
Brendan Hansknecht
ed002ca68a
add a feature flag and environment variable to enable santizers and fuzzing 2022-12-15 08:29:10 -08:00
Ayaz
f7686e5155
Merge pull request #4754 from roc-lang/i4733
Properly handle imported top levels that appear in a non-unary lambda set
2022-12-15 08:04:07 -06:00
Brendan Hansknecht
1164fb4767
ignore fixup chains 2022-12-14 20:31:56 -08:00
Brendan Hansknecht
1b92a24577
avoid building platform for link type dylib and no link
Both of these cases do not tie to a platform. The roc app can be built without considering the platform.
It is often the case that the platform is using one of these options because roc cannot build the platform.
This allows for more flexibility and avoids wasting time compiling the platform.
2022-12-14 17:34:07 -08:00
Ayaz Hafiz
5606e2d61e
Update test 2022-12-14 17:15:51 -06:00
Ayaz Hafiz
c327189ab7
Remove unneeded whitespace 2022-12-14 17:14:44 -06:00
Ayaz Hafiz
70c27943fa
Toss out unneeded test 2022-12-14 17:14:20 -06:00
Ayaz Hafiz
4315a36e90
Refine imported ZAT/function compilation 2022-12-14 17:13:59 -06:00
Ayaz Hafiz
02eec1f60c
Simplify the model of handling imported/unloaded symbol specializations 2022-12-14 17:13:58 -06:00
Ayaz Hafiz
f08d9c9173
Add gen test for other #4733 reproducer 2022-12-14 17:13:58 -06:00
Ayaz Hafiz
0a071e2a98
Rename mono test 2022-12-14 17:13:58 -06:00
Ayaz Hafiz
1727a9a123
Add gen test for #4733 2022-12-14 17:13:44 -06:00
Ayaz Hafiz
b8aa8df100
Make sure to resolve lambda sets for imported top-levels correctly
Part of #4733
2022-12-14 17:13:43 -06:00
Ayaz Hafiz
ed4e047ee8
Reproduce #4733 2022-12-14 17:12:03 -06:00
Ayaz Hafiz
bd06714fd2
Make sure to constrain dbgs with existential correctly 2022-12-14 17:02:29 -06:00
Ayaz Hafiz
2dc19207a3
Throw away usage of stored variables on receiver side 2022-12-14 17:00:37 -06:00
Ayaz Hafiz
a96225e92e
Store specialized variable for use in dbg as fake symbol in lowlevel call 2022-12-14 17:00:37 -06:00
Ayaz Hafiz
fe90355265
Store specialized variables of expect lookups in expect frames 2022-12-14 17:00:36 -06:00
Ayaz Hafiz
16209ef866
Store specialized lookup variables in expects 2022-12-14 16:59:05 -06:00
Ayaz Hafiz
9d5f2aa138
Store specialized var of lookups in storage subs 2022-12-14 16:55:14 -06:00
Ayaz Hafiz
66c5e1292e
Thread expectations through in phase result structs
And provide expectation subs when expectations should be compiled. This
will be useful for getting the specialized type of an expect lookup when
it's available.
2022-12-14 16:55:14 -06:00
Folkert
d287eafa3a
remove F128 2022-12-14 23:28:38 +01:00
Folkert de Vries
6f2e14cf18
Merge pull request #4765 from roc-lang/expects-store-layout-in-lookaside
Remove layouts from the mono AST for expects, and add regtest for #4749
2022-12-14 23:22:03 +01:00
Ayaz
9b4e30a903
Merge pull request #4745 from roc-lang/i4712
Ensure that disjoint nested lambda sets force parents to be disjoint
2022-12-14 14:55:25 -06:00
Ayaz Hafiz
cec6da19de
Check in mono test 2022-12-14 14:20:10 -06:00
Ayaz Hafiz
1233317907
Add test that #4749 compiles
Now that mono does not store expect lookup layouts, the layout cache
should be primed only when specializing the condition of an expect, and
so #4749 is resolved.

Closes #4749
2022-12-14 14:16:59 -06:00
Ayaz Hafiz
a5ecded934
Don't collect layouts in mono of expects anymore 2022-12-14 14:12:57 -06:00