Commit graph

2683 commits

Author SHA1 Message Date
Ayaz Hafiz
79ee266f66
Snapshot/restore pool if lambda sets are disjoint 2022-12-12 18:06:50 -06:00
Ayaz Hafiz
0ef0638862
Remove more dead code 2022-12-12 15:48:30 -06:00
Ayaz Hafiz
22c8719eed
Dead code 2022-12-12 15:47:58 -06:00
Ayaz Hafiz
23932137ef
Avoid exponential unification paths
🤦 when we check whether lambdas can be unified or must be
treated as disjoint we previously had a code path that is actually
exponential in its runtime, regardless of whether it succeeds or fails.
Now, it is linear, though degraded (with a clone) if it fails.
2022-12-12 15:46:05 -06:00
Ayaz Hafiz
1e120653ff
Update derive tests 2022-12-12 15:06:32 -06:00
Ayaz Hafiz
6de816a9fc
Fix test_derive script 2022-12-12 15:04:54 -06:00
Ayaz Hafiz
1262198f7a
Add gen test for #4712 2022-12-12 14:58:41 -06:00
Ayaz Hafiz
cd2b936a59
Ensure that disjoint nested lambda sets force parents to be disjoint
We must be careful to ensure that if unifying nested lambda sets
results in disjoint lambdas, that the parent lambda sets are
ultimately treated disjointly as well.
Consider

```
  v1: {} -[ foo ({} -[ bar Str ]-> {}) ]-> {}
~ v2: {} -[ foo ({} -[ bar U64 ]-> {}) ]-> {}
```

When considering unification of the nested sets

```
  [ bar Str ]
~ [ bar U64 ]
```

we should not unify these sets, even disjointly, because that would
ultimately lead us to unifying

```
v1 ~ v2
=> {} -[ foo ({} -[ bar Str, bar U64 ]-> {}) ] -> {}
```

which is quite wrong - we do not have a lambda `foo` that captures
either `bar captures: Str` or `bar captures: U64`, we have two
different lambdas `foo` that capture different `bars`. The target
unification is

```
v1 ~ v2
=> {} -[ foo ({} -[ bar Str ]-> {}),
         foo ({} -[ bar U64 ]-> {}) ] -> {}
```

Closes #4712
2022-12-12 14:51:18 -06:00
Ayaz Hafiz
f178a86f99
Support pretty-printing can decls in solve tests 2022-12-12 14:50:14 -06:00
Ayaz Hafiz
27dfe974df
Only print lambda ident names in types if they are ambiguous 2022-12-12 14:48:09 -06:00
Ayaz Hafiz
50992d35aa
Support printing lambda names in print decls 2022-12-12 14:13:32 -06:00
Ayaz Hafiz
00ff6dcad7
Print similar-layout procs when borrow fails to find one 2022-12-12 14:13:07 -06:00
Ayaz Hafiz
4cdb8c0cd7
Remove unused unification mismatches 2022-12-12 13:17:43 -06:00
Ayaz Hafiz
04e1e0cd6e
Support better printing of symbols 2022-12-12 10:38:53 -06:00
Ayaz Hafiz
3a2cd2f7c8
Pretty-print canonicalized declarations 2022-12-12 10:28:23 -06:00
Ayaz Hafiz
7135df6d2f
Move can AST pretty-printing into roc_can::debug 2022-12-12 10:09:32 -06:00
Richard Feldman
1cd0097c23
Fix test_gen test 2022-12-11 06:16:29 -05:00
Richard Feldman
f6f8c2876f
Merge remote-tracking branch 'origin/main' into refactor-platform-info 2022-12-11 03:37:48 -05:00
Richard Feldman
141010e6c7
Actually set symbols_from_requires 2022-12-11 03:29:06 -05:00
Richard Feldman
cbc095aa1e
Drop inaccurate comment (copy/paste error) 2022-12-11 03:12:45 -05:00
Richard Feldman
e47898dfff
Rename some more header_for to header_type 2022-12-11 03:02:20 -05:00
Joshua Warner
521afce1f4
Merge pull request #4730 from joshuawarner32/fix-parse-benchmark
Fix parse benchmark and add a benchmark for parsing Num.roc
2022-12-10 16:37:00 -08:00
Joshua Warner
d52b35c1ff
Fix parse benchmark and add a benchmark for parsing Num.roc, the largest builtin file 2022-12-10 11:14:17 -08:00
Richard Feldman
68e6bfcd2a
clippy 2022-12-10 01:49:18 -05:00
Richard Feldman
66f393e30a
Fix a mistake from merge of main 2022-12-10 01:48:38 -05:00
Richard Feldman
75891f6755
fixup! Merge remote-tracking branch 'origin/main' into refactor-platform-info 2022-12-10 01:45:31 -05:00
Richard Feldman
222e0193a3
Don't give packages names 2022-12-10 01:43:53 -05:00
Richard Feldman
e3687935a3
Merge remote-tracking branch 'origin/main' into refactor-platform-info 2022-12-09 22:21:25 -05:00
Richard Feldman
63e9f5da8c
Go back to old opt_main_for_host 2022-12-09 22:18:52 -05:00
Richard Feldman
f34a558c41
Merge pull request #4659 from roc-lang/expect-print-values
Expect print values
2022-12-09 21:24:28 -05:00
Richard Feldman
bff3204727
Include platform provides in exposed 2022-12-09 16:56:00 -05:00
Richard Feldman
ccb6a98f8a
Address unused arg warning 2022-12-09 14:19:26 -05:00
Richard Feldman
29182d8292
Move platform_main_type into provides 2022-12-09 14:19:07 -05:00
Folkert
1ef27b4bec
fix gen-dev compilation 2022-12-09 18:28:14 +01:00
Folkert
0260182fb4
clippy 2022-12-09 16:03:12 +01:00
Folkert
30ce1ad4bb
cleanup 2022-12-09 15:57:50 +01:00
Folkert
19aa3ade45
fix morphic spec for expect runs in --optimize mode 2022-12-09 15:53:53 +01:00
Folkert
a72556b927
refactor entry point 2022-12-09 15:10:25 +01:00
Richard Feldman
4583985f33
Use a better List.range example for step 2022-12-09 09:08:38 -05:00
Richard Feldman
7d8b9b2323
Fix List.range type annotation bug 2022-12-09 06:53:10 -05:00
Folkert de Vries
234f9f54cd
Merge pull request #4714 from roc-lang/expect-dbg-atomics
use atomics for expect/dbg
2022-12-09 09:21:13 +01:00
Folkert
4b9e64fd7d
Merge branch 'expect-dbg-atomics' into expect-print-values 2022-12-08 23:43:11 +01:00
Folkert
13d0b75bc1
Merge remote-tracking branch 'origin/main' into expect-print-values 2022-12-08 23:42:03 +01:00
Folkert
95fe9cbccd
pass the pointer to shared memory around, instead of using a global 2022-12-08 23:22:26 +01:00
Richard Feldman
97332e4af1
Move ModuleNameEnum into HeaderType 2022-12-08 15:31:43 -05:00
Richard Feldman
e2137cc310
Use a pattern match over an inline let 2022-12-08 15:31:42 -05:00
Richard Feldman
e857a91b1b
Drop obsolete constant 2022-12-08 15:31:42 -05:00
Richard Feldman
8b463686bc
Propagate multiple entrypoints to alias analysis 2022-12-08 15:31:42 -05:00
Richard Feldman
236cebacc1
Refactor out PlatformHeaderInfo 2022-12-08 15:31:42 -05:00
Richard Feldman
2a38edf784
Inline send_header_two 2022-12-08 15:31:42 -05:00