Commit graph

77 commits

Author SHA1 Message Date
Ayaz Hafiz
5ea9b145f6
More coalescing 2022-11-02 15:05:43 -05:00
Ayaz Hafiz
ef509ecc97
Inline variable 2022-11-02 15:05:43 -05:00
Ayaz Hafiz
2e07cc6c14
More signature coalescing 2022-11-02 15:05:43 -05:00
Ayaz Hafiz
2be70e6524
Even more coalescing of signatures 2022-11-02 15:05:42 -05:00
Ayaz Hafiz
4bd77250c7
Coalesce one signature type 2022-11-02 15:05:42 -05:00
Ayaz Hafiz
e0a2139b1e
Coalesce even more annotation types 2022-11-02 15:05:42 -05:00
Ayaz Hafiz
a6889a4f6d
Coalesce annotation in typed function constraining 2022-11-02 15:05:42 -05:00
Ayaz Hafiz
6c4722fe1c
Coalesce signatures in destructure constraining 2022-11-02 15:05:42 -05:00
Ayaz Hafiz
b8b0d4f028
Inline a variable 2022-11-02 15:05:42 -05:00
Ayaz Hafiz
951724f476
Coalesce another signature 2022-11-02 15:05:41 -05:00
Ayaz Hafiz
a589fbb9e7
Coalesce return type annotation in function def constraining 2022-11-02 15:05:41 -05:00
Ayaz Hafiz
db9b29f0c8
Coalesce signatures in function def constraining 2022-11-02 15:05:41 -05:00
Ayaz Hafiz
ce7648b344
Coalesce type signature vars in typed def constraining 2022-11-02 15:05:41 -05:00
Ayaz Hafiz
3362763e45
Coalesce signature types in value def constraining 2022-11-02 15:05:41 -05:00
Ayaz Hafiz
34cd1fb825
Pattern expectation takes a type index 2022-11-02 15:05:40 -05:00
Ayaz Hafiz
2a4fca7034
First pass at expectations taking a type index 2022-11-02 15:05:22 -05:00
Ayaz Hafiz
cbade622b6
exhaustive expects type index 2022-11-02 15:05:01 -05:00
Ayaz Hafiz
283f6e8e1e
Give localized region for expected list elem pattern 2022-11-01 12:06:59 -05:00
Ayaz Hafiz
9ab5d0efb8
Constraining of list patterns 2022-10-31 17:05:08 -05:00
Ayaz Hafiz
b0a8b85de3
Canonicalization of list patterns 2022-10-31 17:04:47 -05:00
Ayaz Hafiz
b3956569a6
Add comment on inlining 2022-10-31 09:43:28 -05:00
Ayaz Hafiz
e1b6e0334b
Generate OIOP vars correctly 2022-10-31 09:38:22 -05:00
Ayaz Hafiz
debe6332c5
Support OIOP for type aliases 2022-10-31 09:38:21 -05:00
Ayaz Hafiz
aa8a7b1ebc
Less aggressive inlining in debug builds
Being too aggressive about inlining in debug builds can result in huge
stack frames building up when inlined functions are contained in
non-tail-recursive, non-inlined function calls. This easily hits stack
overflows, so avoid it.
2022-10-31 09:38:21 -05:00
Ayaz Hafiz
42058c3067
Add note on bug in constraining 2022-10-31 09:37:41 -05:00
Folkert de Vries
02a76bb8bd
Merge pull request #4399 from roc-lang/no-types-in-constraining-api
Have most constraining APIs take a type index rather than `Type`
2022-10-26 19:45:55 +02:00
Ayaz Hafiz
a4d7ee33c1
Apply lints 2022-10-24 18:23:36 -05:00
Ayaz Hafiz
084393c326
store_index is now redundant 2022-10-24 18:21:05 -05:00
Ayaz Hafiz
bff3d534f6
Store expects type index 2022-10-24 18:20:18 -05:00
Ayaz Hafiz
278754506f
lookup expects type index 2022-10-24 18:14:28 -05:00
Ayaz Hafiz
97d47cc05f
includes_tag expects type index 2022-10-24 18:08:45 -05:00
Ayaz Hafiz
556222caa1
is_open_type expects type index 2022-10-24 17:51:39 -05:00
Ayaz Hafiz
0f0c02965a
pattern_presence expects type index 2022-10-24 17:49:02 -05:00
Ayaz Hafiz
0990eda0cb
equal_pattern_types takes type index 2022-10-24 17:41:13 -05:00
Ayaz Hafiz
c53e08f63c
equal_types_with_storage takes type index 2022-10-24 17:35:09 -05:00
Ayaz Hafiz
cca5f53e98
equal_types_var requires a type index 2022-10-24 17:30:04 -05:00
Ayaz Hafiz
91eb9aaea4
Rename variables 2022-10-24 14:30:50 -05:00
Ayaz Hafiz
83e35fa40d
Get rid of another clone 2022-10-24 14:29:05 -05:00
Ayaz Hafiz
0b8ac07287
Get rid of more type clones 2022-10-24 14:25:19 -05:00
Ayaz Hafiz
7c3fe5bc44
Remove some type clones 2022-10-24 14:11:53 -05:00
Ayaz Hafiz
55d7f3f658
Require type and expected indices in equal_types constraints 2022-10-24 14:05:19 -05:00
Ayaz Hafiz
6bb97c92b9
Canonicalize multiple abilities bound to a type variable 2022-10-24 13:56:07 -05:00
Ayaz Hafiz
d26e9c81e0
Resolve ability specializations looked up in expects 2022-10-17 17:56:48 -05:00
Ayaz Hafiz
8aee32830a
Add symbols' localized type variable to the AST 2022-10-17 17:35:48 -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
54e977be2d
Constrain function type on closure type, not signature 2022-10-12 16:37:49 -05:00
Ayaz Hafiz
619cd2f629
Infer ranged number for chars in patterns 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 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
42633c1f96
Span body of last branch in exhaustiveness checking
Closes #4028
2022-09-13 16:24:59 -04:00