Commit Graph

1554 Commits

Author SHA1 Message Date
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
29244112df
Handle optional record fields in record pattern indexing 2022-09-19 13:51:16 -05:00
Ayaz Hafiz
1799d6ed0e
Construct exhaustiveness branches with condition, not branch, variable
Previously we would construct the shapes of unions used in the pattern
tree for exhaustiveness checking using the type of the branch patterns,
rather than the type of the condition variable. Clearly we want to
always use the condition variable, otherwise some branches will be
seen as exhaustive, when they are not!

To do this, we now index into the condition variable while refying the
patterns to build the tree for exhaustiveness checking.

Closes #4068
2022-09-19 13:37:59 -05:00
Ayaz Hafiz
0f0e414272
Improve error message for uninhabited patterns 2022-09-19 10:55:02 -05:00
Ayaz Hafiz
147636f42b
Base reported row numbers on original rows, not reified rows 2022-09-19 10:47:35 -05:00
Ayaz Hafiz
041b91e031
Add more test cases 2022-09-19 10:45:31 -05:00
Ayaz Hafiz
be853b65c5
Support unification of extension types with uninhabited branches 2022-09-19 10:32:39 -05:00
Ayaz Hafiz
8a42d60ca2
Move inhabited check to subs module 2022-09-19 10:08:18 -05:00
Ayaz Hafiz
ac752adc7c
Check in some more work 2022-09-16 16:09:21 -05:00
Ayaz Hafiz
6adb88beee
Report uninhabited branches as redundant 2022-09-16 15:55:46 -05:00
Ayaz Hafiz
0d98abae7b
Clippy 2022-09-16 15:39:09 -05:00
Ayaz Hafiz
1d7aef8c96
Don't include uninhabited constructors in exhaustiveness checking 2022-09-16 15:36:54 -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
8cd4281173
Complex bitcast recursive tag union pointers when we need them to be opaque
Resolves a discussion on Zulip: https://roc.zulipchat.com/#narrow/stream/231635-compiler-development/topic/When.20recursive.20structs.20aren't.20recursive
2022-09-14 20:58:54 -05:00
Folkert de Vries
4b0342ef34
Merge pull request #4039 from roc-lang/fix-expect-oom
Copy list values from the correct offset when reporting expects
2022-09-14 22:51:57 +02:00
Ayaz Hafiz
fa700259aa
Clippy 2022-09-14 14:53:00 -05:00
Ayaz Hafiz
c4a3a8bd31
Copy list values from the correct offset when reporting expects
Co-authored-by: Folkert de Vries <folkert@folkertdev.nl>
2022-09-14 14:28:56 -05:00
Folkert de Vries
c218543408
Merge pull request #4033 from roc-lang/i4028
Span body of last branch in exhaustiveness checking
2022-09-14 21:24:23 +02:00
Ayaz Hafiz
6a83babaf3
Don't write extra newline if it's already there 2022-09-14 11:26:52 -05:00
Ayaz Hafiz
44772b8f3d
Don't add to host exposed during roc test 2022-09-14 11:26:50 -05:00
Ayaz Hafiz
31b894d027
Remove region when normalizing expects 2022-09-14 11:26:48 -05:00
Ayaz Hafiz
a8282f36c3
Handle values that are functions in expects 2022-09-14 11:26:46 -05:00
Ayaz Hafiz
42633c1f96
Span body of last branch in exhaustiveness checking
Closes #4028
2022-09-13 16:24:59 -04:00
Folkert de Vries
3ee3f23836
Merge pull request #3971 from roc-lang/dependabot/cargo/bumpalo-3.11.0
Bump bumpalo from 3.10.0 to 3.11.0
2022-09-13 21:00:00 +02:00
Richard Feldman
620a3feb75
Add some tests for Str.replace___ functions 2022-09-12 21:05:50 -06:00
Richard Feldman
4ed63c548b
Fix type mismatches in Str.replace___ functions
...and fix/finish the draft `Str.replaceEach` implementation!
Don't be so modest, Richard :)
2022-09-12 21:05:38 -06:00
Richard Feldman
c64874937f
Add entries for Str.replace___ functions to Symbol 2022-09-12 21:03:18 -06:00
Jan Van Bruggen
9ef57f86ac
Add first draft of Str.replaceEach builtin 2022-09-12 21:03:11 -06:00
Jan Van Bruggen
2b65659a11 Add Str.replaceLast builtin 2022-09-12 20:37:23 -06:00
Jan Van Bruggen
c5b6aef21a Add Str.replaceFirst builtin 2022-09-12 20:37:23 -06:00
dependabot[bot]
0079048944
Bump bumpalo from 3.10.0 to 3.11.0
Bumps [bumpalo](https://github.com/fitzgen/bumpalo) from 3.10.0 to 3.11.0.
- [Release notes](https://github.com/fitzgen/bumpalo/releases)
- [Changelog](https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fitzgen/bumpalo/compare/3.10.0...3.11.0)

---
updated-dependencies:
- dependency-name: bumpalo
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 21:08:56 +00:00
dependabot[bot]
d1c406812f
Bump pretty_assertions from 1.2.1 to 1.3.0
Bumps [pretty_assertions](https://github.com/rust-pretty-assertions/rust-pretty-assertions) from 1.2.1 to 1.3.0.
- [Release notes](https://github.com/rust-pretty-assertions/rust-pretty-assertions/releases)
- [Changelog](https://github.com/rust-pretty-assertions/rust-pretty-assertions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-pretty-assertions/rust-pretty-assertions/compare/v1.2.1...v1.3.0)

---
updated-dependencies:
- dependency-name: pretty_assertions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 05:28:00 +00:00
Richard Feldman
be0c098b76
Revert "Always put the | in a has clause on a new line"
This reverts commit fd2ef1a3ce.
2022-09-11 20:25:15 -04:00
Richard Feldman
5d7213aa7d
Removed an || condition that was always false 2022-09-11 20:19:22 -04:00
Richard Feldman
fd2ef1a3ce
Always put the | in a has clause on a new line 2022-09-11 20:19:11 -04:00
Richard Feldman
8e6abc8079
Clean up some formatter logic 2022-09-11 20:18:40 -04:00
Folkert
d725e44538
handle case where C returns by-value, but roc wants to return by-pointer 2022-09-11 16:56:03 -04:00
Jan Van Bruggen
4625a0a869
Rephrase CPU-related "platform"/"host" to "target"/"your machine" 2022-09-11 10:25:02 -06:00
Jan Van Bruggen
68be131bd7
Rephrase "precompiled platform" to "prebuilt platform" 2022-09-11 10:25:01 -06:00
Jan Van Bruggen
5663a1d9f9
Rephrase "precompiled host" to "precompiled platform"
This is for clarity to Roc app developers, for whom "host" is not
necessarily in their Roc vocabulary. Additionally, this phrasing
is simply more accurate.
2022-09-11 10:25:01 -06:00
Folkert
fbc5412161
ignore another test 2022-09-09 23:20:11 +02:00
Folkert
b8a5d69578
ignore another test on windows 2022-09-09 23:20:11 +02:00
Folkert
5d60ffeebf
disable a segfaulting test on windows 2022-09-09 23:20:11 +02:00
Folkert
57201db2f6
windows: temporarily do not drop gen_test results 2022-09-09 23:20:10 +02:00
Richard Feldman
3e1ca37b9e
Merge pull request #3950 from roc-lang/keep-dll-loaded
keep dll loaded
2022-09-09 14:19:35 -07:00
Jan Van Bruggen
aec2baefe3
Merge pull request #3997 from roc-lang/lint_markdown
Lint all markdown files once, guided by markdown-cli2
2022-09-09 09:27:31 -06:00
Jan Van Bruggen
30fec8eacd
Add missing h1s 2022-09-09 01:12:32 -06:00
Jan Van Bruggen
8bbfd68621
Add language to all fenced code blocks
See https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md040
2022-09-09 01:12:31 -06:00