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
Ayaz Hafiz
a5ecded934
Don't collect layouts in mono of expects anymore
2022-12-14 14:12:57 -06:00
Ayaz Hafiz
1962f2045e
Remove layouts from the mono AST for expects
...
This actually isn't needed, because the backends must lookup the layout
from the environment anyway. So it's enough to lookup the symbol and
find its layout, there is no need to additionally store it.
2022-12-14 14:10:02 -06:00
Ayaz Hafiz
f2ffda6d05
Revert "Add a LayoutBuffer to store layouts aside and thread it through"
...
This reverts commit 3d73e33b49
.
2022-12-14 14:05:56 -06:00
Ayaz Hafiz
897b69b072
Revert "Store layouts in a layout-buffer for expects"
...
This reverts commit bba6e36a18
.
2022-12-14 14:05:46 -06:00
Ayaz Hafiz
bba6e36a18
Store layouts in a layout-buffer for expects
2022-12-14 14:05:28 -06:00
Ayaz Hafiz
3d73e33b49
Add a LayoutBuffer to store layouts aside and thread it through
2022-12-14 13:48:58 -06:00
Folkert
a72556b927
refactor entry point
2022-12-09 15:10:25 +01:00
Ayaz Hafiz
01dea13b49
Pretty print symbols
2022-12-03 22:33:45 -06:00
Ayaz Hafiz
5cfbc49ebf
Remove needless hole translation
2022-12-02 12:21:44 -06:00
Ayaz Hafiz
52c858dc53
Remove aliases in partial procs
...
This is no longer needed
2022-12-02 12:19:13 -06:00
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
Richard Feldman
58e672749c
Fix glue getter name synchronization
2022-11-16 17:06:21 -05:00
Folkert
c9d1401738
generate correct glue mono IR procs for tag unions
2022-11-16 20:28:26 +01:00
Richard Feldman
70c949c50b
Handle field layouts for more than just structs
2022-11-16 11:22:00 -05:00
Richard Feldman
b44f76f500
Use from_iter_in
2022-11-16 11:21:50 -05:00
Richard Feldman
8e2bbee377
Simplify how glue_procs are handled
2022-11-13 23:10:23 -05:00
Richard Feldman
d35d268a6b
Move layout_contains_function to a method on Layout
2022-11-13 18:14:33 -05:00
Richard Feldman
f24275c28f
Make generate_glue_procs take a trait
2022-11-13 18:13:50 -05:00
Richard Feldman
99420f65ed
Merge branch 'glue-exposed' into glue-getters
2022-11-11 17:02:27 -05: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
Folkert
19a8b95c42
codegen getters
2022-11-06 14:56:51 +01:00
Folkert
5ae4ccad5e
refactor
2022-11-06 13:36:58 +01: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
Ayaz Hafiz
d114d410cb
Compile expect conditions with bool type, not continuation type
2022-11-02 16:02:39 -05:00
Folkert
c9aedff3e8
glue getters in mono
2022-11-02 21:36:32 +01:00
Ayaz Hafiz
fc52e9582e
Fix an off-by-one modelling
2022-11-01 22:42:52 -05:00
Ayaz Hafiz
822aa71a0a
Compute list element stores lazily
2022-11-01 15:37:36 -05:00