Ayaz Hafiz
fdbc0ebdad
Thread LayoutInterner trait through
2023-01-03 11:48:46 -06:00
Ayaz Hafiz
b60d5c0251
Push wrapped layout interners through
2023-01-03 10:51:33 -06:00
Ayaz Hafiz
947158b17e
Stub out layout interners into own module
2023-01-03 10:07:12 -06:00
Ayaz Hafiz
68a1589663
Unwrap interned layout
2022-12-29 18:48:00 -06:00
Ayaz Hafiz
1ae3c3b0f8
Fix type error in niche unpacking
2022-12-29 18:45:20 -06:00
Ayaz Hafiz
bf12e9e928
Lift docs for captures niches
2022-12-29 18:45:00 -06:00
Ayaz Hafiz
6722dc3b84
Hide away the niche representation
2022-12-29 18:44:39 -06:00
Ayaz Hafiz
321ac0b06f
s/CapturesNiche/Captures
2022-12-29 18:43:45 -06:00
Ayaz Hafiz
039bab65f5
Remove unused imports
2022-12-29 18:43:28 -06:00
Ayaz Hafiz
972046445b
Lift Niche from just captures-niche to generic niche
2022-12-29 18:43:26 -06:00
Ayaz
ea53a50447
Merge pull request #4836 from roc-lang/intern-layouts-2
...
Intern list element layouts and thread mut layout interner through LLVM backend
2022-12-29 18:41:35 -06:00
Ayaz
858670fac7
Merge pull request #4833 from roc-lang/intern-layouts
...
Intern all the layouts
2022-12-29 18:28:44 -06:00
Ayaz Hafiz
d59b137f45
Implement printing of nullable wrapped IR layouts
2022-12-29 12:17:46 -06:00
Ayaz Hafiz
e4b5252e51
List takes interned element
2022-12-29 08:52:37 -06:00
Ayaz Hafiz
7ab7fdfa7b
Push interned layouts as mut throughout the backend, and intern box layouts
2022-12-28 18:51:26 -06:00
Ayaz Hafiz
1aa89fc567
Remove dead code
2022-12-28 17:08:05 -06:00
Ayaz Hafiz
58a28bb7b8
Intern unwrapped capture layout
2022-12-28 17:06:44 -06:00
Ayaz Hafiz
7045001f64
Intern captures layouts
2022-12-28 17:05:04 -06:00
Ayaz Hafiz
db547a600a
Turn off false-positive producing debug assert for now
...
See #4831
2022-12-28 16:31:25 -06:00
Ayaz
fe2bab56f9
Merge pull request #4819 from roc-lang/i4717
...
Compile anonymous closures with multiple specializations, and various fixes to lambda set compilation
2022-12-28 11:45:04 -06:00
Ayaz Hafiz
ce61386d0a
Expose set and representation to crate
2022-12-27 12:47:04 -06:00
Ayaz Hafiz
e7aaeb931a
Add a comment regarding behavior of extend_argument_list_for_named
2022-12-27 10:42:35 -06:00
Ayaz Hafiz
830843da82
Remove unused extend_argument_list
2022-12-27 10:40:09 -06:00
Ayaz Hafiz
e89f5ad6e5
Mark a couple functions as crate-exposed
2022-12-27 10:28:00 -06:00
Ayaz Hafiz
38920b98fa
Debug missing lambda names
2022-12-27 09:54:12 -06:00
Ayaz Hafiz
593344f5c5
Determine the proc layout based on captures of an individual lambda
...
Previously, we determined whether a closure argument should be added to
the proc layout of a compiled function by checking whether the lambda
set was material at all. But, the extension for a single function should
be added if and only if the function itself captures.
2022-12-27 09:15:21 -06:00
Folkert
d287eafa3a
remove F128
2022-12-14 23:28:38 +01:00
Ayaz Hafiz
01dea13b49
Pretty print symbols
2022-12-03 22:33:45 -06:00
Ayaz Hafiz
6e72307736
Format problems reported by the IR checker
2022-12-03 21:35:01 -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
af81ceae38
Add method to grab default compilation width of a number
2022-11-16 13:54:48 -06:00
Richard Feldman
53ab17d0e9
contains_functions -> has_varying_stack_size
2022-11-16 13:55:06 -05:00
Richard Feldman
d35d268a6b
Move layout_contains_function to a method on Layout
2022-11-13 18:14:33 -05:00
Richard Feldman
56f33c4e1c
Make is_recursive_tag_union a method on Layout
2022-11-12 20:57:04 -05:00
Ayaz Hafiz
281bc94b55
Remove FlatType::Erroneous
2022-11-08 14:11:25 -06: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
729f0a8e27
Remove return
on unreachable result
2022-10-12 16:37:50 -05:00
Ayaz Hafiz
bc2f4569aa
Able variables that are never used can become void
2022-10-12 16:37:50 -05:00
Ayaz
83b64c4fb3
Merge pull request #4209 from roc-lang/impl-tag-discriminant
...
Derive `Hash` implementations for tag unions
2022-10-10 22:23:05 -05:00
Ayaz Hafiz
61cf8e53e6
Have FunctionOrTagUnion include multiple possible tags
2022-10-05 17:24:52 -05:00
Ayaz Hafiz
251b3865d9
Implement tag union discriminant extraction for byte- and newtype-variants
2022-10-04 18:04:46 -05:00
Ayaz Hafiz
f41936d5e5
Unwrap layouts containing void layouts as newtypes
...
Addresses the attempt to do so in https://github.com/roc-lang/roc/pull/3465
Co-authored-by: Folkert <folkert@folkertdev.nl>
2022-09-19 16:50:49 -05:00
Folkert
639c1e5fa3
get rid of UnitWithArguments
2022-09-19 16:49:55 -05:00
Ayaz Hafiz
d2cc1041aa
Unused import
2022-09-16 10:25:31 -05:00
Ayaz Hafiz
a81d4d4be2
Allow any numeric range to become a float
...
Currently things like `1 / 200` lead to a miscompilation because we type
`200` (and as a result, both `1` and the division result) as a ranged
number with width >= U8. During mono that forces the number to become an
`I64` because our logic was that a ranged number can only become a float
if it's at least as wide as an I8. But this is incorrect; as long as the
type is wrapped in `Frac` constructor and it's a ranged number (and not
a ranged int), it should become a fractional type.
```
» 1 / 200
0.005 : Float *
```
Closes #4047
2022-09-16 10:05:43 -05:00
Ayaz Hafiz
3a130acc32
Fix mut in test
2022-08-31 15:01:01 -05:00
Ayaz Hafiz
c2d042eba2
Stray dbg
2022-08-31 14:53:52 -05:00
Ayaz Hafiz
95765bcb1e
Intern the lambda set representation
2022-08-31 14:50:56 -05:00
Ayaz Hafiz
3b4b1838b8
Push layout interner further through Layout
2022-08-31 14:33:52 -05:00
Ayaz Hafiz
ed04c2040a
Push the layout interner through the backends
2022-08-31 14:33:52 -05:00