Ayaz Hafiz
058d1f0b5d
Add tests for multiple rest pattern errors
2022-10-31 17:05:07 -05:00
Richard Feldman
bc2ec738a0
Merge pull request #4281 from lucacervello/suggest-lambda-operator
...
Add suggest lambda operator instead of when
2022-10-31 10:29:46 -07:00
Ayaz Hafiz
debe6332c5
Support OIOP for type aliases
2022-10-31 09:38:21 -05:00
Ayaz Hafiz
6ee2fb496d
Do not check named arguments in both alias args and real typ
2022-10-31 09:38:21 -05:00
Ayaz Hafiz
cfe7c8e5ef
Warn on the presence of unnecessary wildcards in output positions
2022-10-31 09:38:20 -05:00
Ayaz Hafiz
4d48ea7c2f
Materialize extension variable polarity in error type reporting
2022-10-31 09:37:40 -05:00
Ayaz Hafiz
3c15ff4694
Correctly print wildcards as appropriate in error messages
2022-10-31 09:37:39 -05:00
Ayaz Hafiz
89867a4dc5
Add parsing error reporting for list patterns
2022-10-26 18:05:52 -05:00
Ayaz Hafiz
b1a113e084
Simplify confusing error message
2022-10-24 14:00:45 -05:00
Ayaz Hafiz
c1ca64bbc9
Error messages when multiple ability bounds are missing or incomplete
2022-10-24 14:00:45 -05:00
Ayaz Hafiz
603160dae3
Report errors for duplicate bound abilities
2022-10-24 13:59:50 -05:00
Ayaz Hafiz
14e0cd1b84
Address syntax error
2022-10-23 20:49:06 -05:00
Ayaz Hafiz
bb8888b115
Make sure we don't report errors for illegal derived bodies, just their decls
2022-10-23 20:48:05 -05: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
Luca Cervello
b39f0d98b7
review: use parser suggestion
2022-10-17 18:43:28 +02:00
Ayaz Hafiz
f13c57be8b
Tighten up infinite loop error
2022-10-17 10:02:40 -05:00
Ayaz Hafiz
ecab8fa25a
Make sure self-recursive checks only happen after typechecking
...
Programs like
```
after : ({} -> a), ({} -> b) -> ({} -> b)
fx = after (\{} -> {}) \{} -> if Bool.true then fx {} else {}
```
are legal because they always decay to functions, even if they may not
look like functions syntactically. Rather than using a syntactic check
to check for illegally-recursive functions, we should only perform such
checks after we know the types of values.
Closes #4291
2022-10-17 09:59:32 -05:00
Ayaz Hafiz
20e4295eea
Make sure type variables bound to abilities are instantiated in aliases
...
Closes #4259
2022-10-14 13:56:00 -05:00
Ayaz Hafiz
ce2760d96d
Some more reporting tests for Eq
2022-10-12 16:38:36 -05:00
Ayaz Hafiz
99f097ddb5
Improve error messages for abilities
2022-10-12 16:38:35 -05:00
Ayaz Hafiz
b6ffd09adf
Update reporting tests
2022-10-12 16:37:50 -05:00
Ayaz Hafiz
0045c16b3e
Improve notes on underivable abilities
2022-10-12 16:37:49 -05:00
Ayaz Hafiz
b587bcf0c2
Implement obligation checking for the Eq
ability
...
Every type can have `Eq.isEq` derived for it, as long as
- it does not transitively contain a function
- it does not transitively contain a floating point value
- it does not transitively contain an opaque type that does not support
`Eq`
2022-10-12 16:37:49 -05:00
Luca Cervello
1c0b1ba0af
feat: suggest lambda operator
2022-10-10 12:43:38 +02:00
Ayaz Hafiz
9d91b9bc5a
Add reporting case for inferred char range type mismatch
2022-10-05 17:28:01 -05:00
Ayaz Hafiz
178b634266
Treat single quote literals as ranged numbers for inference purposes
2022-10-05 17:28:00 -05:00
Ayaz
a08b45263b
Merge branch 'main' into shift-signature
...
Signed-off-by: Ayaz <20735482+ayazhafiz@users.noreply.github.com>
2022-10-04 12:58:09 -05:00
Ayaz Hafiz
dea7661068
Have Num.shift*By
functions shift by a U8
...
302305020
2022-10-04 12:28:33 -05:00
Ayaz Hafiz
5c6856d1d6
Add reporting test
2022-10-04 11:10:11 -05:00
Ayaz Hafiz
e9efc95425
Obligation checking for the Hash
ability
...
This implements type-level checks that types can and cannot implement
the `Hash` ability.
Part of #4195
2022-10-04 10:51:14 -05:00
Ayaz Hafiz
eadbc0912a
Update the compiler to be aware of Hash
2022-10-04 10:22:22 -05:00
Ayaz Hafiz
cf5712620c
Suggest Bool.true and Bool.false where tag literals are used
...
Closes #4147
2022-10-03 17:36:27 -05:00
Ayaz Hafiz
581eeb5054
Improve invalid recursion error message quality
2022-10-03 13:30:43 -05:00
Ayaz Hafiz
92b754f292
Illegal self recursion on toplevel defs
...
Closes #4153
2022-10-03 13:14:56 -05:00
Ayaz Hafiz
fd4b20de58
Fix test
...
Closes #3385
2022-10-03 13:03:52 -05:00
Ayaz Hafiz
985da70343
Add tests to ignore for now
2022-09-30 13:40:34 -05:00
Ayaz Hafiz
92aa0912ea
Report unused imports in modules
2022-09-30 13:40:34 -05:00
Ayaz Hafiz
5dc51ce444
Add unnecessary import test cases
2022-09-30 13:40:34 -05:00
Ayaz Hafiz
5f117be306
Improve error message when shadowing builtin type
...
Closes #3109
2022-09-30 13:40:34 -05:00
Tim Whiting
ab000a5b49
Update error text
...
fix error text
2022-09-30 07:36:24 -06:00
Tim Whiting
f323fe6534
fix expression indentation error
2022-09-28 20:11:24 -06:00
Ayaz Hafiz
06bef34829
Import Decode by default in all modules
2022-09-21 12:29:07 -05:00
Ayaz Hafiz
1de37f042e
Update reporting tests
2022-09-21 12:29:06 -05:00
Ayaz
211c297230
Merge pull request #4041 from KilianVounckx/opaque-bool
...
Opaque bool
2022-09-21 11:15:41 -05:00
Ayaz Hafiz
c430939432
Fix reporting tests
2022-09-20 15:51:04 -05:00
Ayaz Hafiz
3d4313efbf
Update reporting tests
2022-09-20 14:42:09 -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