Commit graph

338 commits

Author SHA1 Message Date
Ayaz Hafiz
42e8e409d4
Address lint 2022-12-01 15:59:01 -06:00
Ayaz Hafiz
9181ed8092
Correctly compile rvalue closures defined in nested defines to lvalues
Previously, a program like

```
main =
  f =
    n = 1
    \{} -[#lam]-> n  # suppose lambda set = #lam
  f {}
```

would be transformed to

```
main =
  n = 1
  f = \{} -[#lam]-> n
  f {}
```

However, the IR lowering procedure is such that we would then associate
`f` as definining the procedure given the lambda set `#lam`. This is not
correct, as `f` is really a function pointer in this circumstance,
rather than the definer of `#lam`.

Instead, the transformation we want to perform is

```
main =
  n = 1
  #lam = \{} -[#lam]-> n
  f = #lam
  f {}
```

Which is what this patch does

Closes #2403
2022-12-01 15:47:18 -06:00
Ayaz Hafiz
68e364d897
Do not attempt to handle aliasing of procs in variable assignments
Please see the comment in the diff to explain the rationale of this
change.

Closes #4636
2022-12-01 15:20:58 -06:00
Ayaz Hafiz
2dfe0276e4
Make sure to assign and update program holes correctly when specializing symbols
Previously this was a bit hacky, we worked around having to update
symbol substitutions by special-casing the rest of the program. There's
not need to do that.
2022-12-01 14:57:01 -06:00
Richard Feldman
58fad36f9d
Merge pull request #4460 from roc-lang/crash
Crash
2022-11-25 17:18:21 -05:00
Folkert
07b7a93b9f
fix not being able to dbg variable 2022-11-25 17:55:01 +01:00
Ayaz Hafiz
cb7de132e5
Update mono 2022-11-24 14:46:54 -06:00
Ayaz Hafiz
803d7e30e3
Eliminate Stmt::RuntimeError in favor of crash 2022-11-24 14:46:53 -06:00
Ayaz Hafiz
a2f2a18a76
Replace runtime error with crash 2022-11-24 14:46:53 -06:00
Ayaz Hafiz
7668d7d592
Not everything is equal, but this is I suppose 2022-11-24 14:46:53 -06:00
Ayaz Hafiz
d9a8cba821
Correct symbol capturing of crash 2022-11-24 14:46:51 -06:00
Ayaz Hafiz
c7ef1668d4
Implement mono of crash 2022-11-24 14:46:51 -06:00
Ayaz Hafiz
e2b30e5301
Constrain + solve crash 2022-11-24 14:46:50 -06:00
Ayaz Hafiz
9dc489c2b0
First pass constraining crash 2022-11-24 14:46:49 -06:00
Folkert
e44a8a9eed
print all the relevant info 2022-11-23 22:58:58 +01:00
Folkert
e7f3c6f281
inline dbg 2022-11-23 21:23:28 +01:00
Ayaz Hafiz
af81ceae38
Add method to grab default compilation width of a number 2022-11-16 13:54:48 -06:00
Folkert
662bf1de99
more workspace dependencies 2022-11-13 16:10:02 +01:00
Anton-4
f20577d9fb
format 2022-11-09 20:48:18 +01:00
Anton-4
38ea090c3e
rust 1.64 + clippy 2022-11-09 19:35:09 +01:00
Folkert
14cd48fce7
Merge remote-tracking branch 'origin/main' into rust-1-62-1 2022-11-09 13:51:51 +01:00
Ayaz Hafiz
28c3709ddf
Miscellaneous cleanup 2022-11-08 14:11:26 -06:00
Ayaz Hafiz
281bc94b55
Remove FlatType::Erroneous 2022-11-08 14:11:25 -06:00
Luke Boswell
2c2a70b8e7 Merge remote-tracking branch 'upstream/main' into rust-docs 2022-11-06 09:15:57 +11:00
Folkert
f291e85ccb
revert size change 2022-11-04 00:07:11 +01:00
Folkert
5c33369d6b
formatting 2022-11-03 23:48:39 +01:00
Folkert
134de80150
various updates 2022-11-03 17:18:27 +01:00
Folkert
66a1ba00eb
1.65 clippy fixes 2022-11-03 16:20:37 +01:00
Luke Boswell
a3f901427a
correct formatting and removed duplicate image 2022-11-03 20:02:10 +11:00
Luke Boswell
f3bdb5f321
updating rust package documentation 2022-11-03 20:00:06 +11:00
Ayaz Hafiz
d114d410cb
Compile expect conditions with bool type, not continuation type 2022-11-02 16:02:39 -05:00
Ayaz Hafiz
fc52e9582e
Fix an off-by-one modelling 2022-11-01 22:42:52 -05:00
Ayaz Hafiz
63abc4096d
Remove stale TODOs 2022-11-01 22:36:52 -05:00
Ayaz Hafiz
2d20c3b339
Allow too many args 2022-11-01 15:42:24 -05:00
Ayaz Hafiz
822aa71a0a
Compute list element stores lazily 2022-11-01 15:37:36 -05:00
Ayaz Hafiz
27b9dd8253
Simplify arity and branching calculation 2022-11-01 15:33:23 -05:00
Ayaz Hafiz
0706615d29
Decision tree compilation of suffixed list patterns 2022-11-01 15:22:31 -05:00
Ayaz Hafiz
45f7cd5ad7
Make sure to update path of matched list 2022-11-01 15:22:31 -05:00
Ayaz Hafiz
ae71c7efe2
Decision tree compilation of list patterns 2022-11-01 15:22:31 -05:00
Ayaz
da1d937277
Merge pull request #4352 from roc-lang/i4349
Support monomorphic captures of body-polymorphic expressions in closures
2022-11-01 15:21:30 -05:00
Ayaz Hafiz
b0a8b85de3
Canonicalization of list patterns 2022-10-31 17:04:47 -05:00
Ayaz Hafiz
0f0678ce73
s/closure_names/symbol_names/g in subs 2022-10-24 13:59:51 -05:00
Ayaz Hafiz
5164994fb5
Do not attempt to lookup functions in expects
Functions are not useful to print in expect results, because they are
only printed opaquely as `<function>`. Moreover, their transformation to
closure sets during mono can be extremely lossy, up to and including the
elision of symbols for function closure symbols. As such, simply do not
attempt to lookup or print functions referenced in expects.

Closes #4389
2022-10-24 10:28:56 -05:00
Ayaz Hafiz
b51816d5ef
Improve documentation and structure of UseDepth 2022-10-23 20:44:04 -05:00
Ayaz Hafiz
ee8e718cc1
Support monomorphic captures of polymorphic expressions in closures
Closes #4349
2022-10-23 20:44:03 -05:00
Richard Feldman
f734cc11c2
Merge pull request #4364 from travisstaloch/str-graphemes
Str graphemes
2022-10-22 22:31:50 -07:00
Prajwal S N
df7e4eea7e
builtin(str): implement Str.graphemes
Signed-off-by: Prajwal S N <prajwalnadig21@gmail.com>
2022-10-22 19:29:49 -07:00
Folkert de Vries
be624f8bcb
Merge pull request #4359 from roc-lang/i4313
Disallow typing optional fields when required fields are annotated
2022-10-23 01:20:55 +02:00
Ayaz Hafiz
05e8e6de6f
Disallow typing optional fields when required fields are annotated
Closes #4313
2022-10-18 15:50:20 -05:00
Ayaz Hafiz
d26e9c81e0
Resolve ability specializations looked up in expects 2022-10-17 17:56:48 -05:00