Commit graph

52 commits

Author SHA1 Message Date
Folkert
36e6950daa ensure VarId always encodes root var
otherwise variables with the same root, but different values would be different once imported in another module
2020-06-30 15:03:30 +02:00
Folkert
c589be43c6 fix triple (or more) mutualy recursive type aliases 2020-06-30 14:25:47 +02:00
Folkert
5483ec819f fix infinite unfolding of recursive tag union 2020-06-30 13:54:16 +02:00
Folkert
41621bc509 fix test outputs
in some cases for aliases the outputs are not entirely correct yet. That's future work
2020-06-27 21:01:51 +02:00
Folkert
79f01e0604 loads of things 2020-06-27 16:20:30 +02:00
Folkert
e5997c4047 fix mutual recursive types
I'll write a bit more about this in the PR message
2020-06-26 01:03:55 +02:00
Folkert
055b01c463 rewrite uniqueness logic 2020-06-24 23:06:34 +02:00
Richard Feldman
269da82840 Make VarStore no longer use atomics 2020-06-13 21:59:01 -04:00
Richard Feldman
a4338f0406 Remove lots of unnecessary clones (thanks clippy!) 2020-06-07 15:43:07 -04:00
Richard Feldman
c47dc57fc2 Appease clippy 2020-05-26 00:41:57 -04:00
Richard Feldman
4295dec955 Fix load_builtin_aliases ordering 2020-05-26 00:04:59 -04:00
Richard Feldman
c386192e8b Reorganize when solving and constraint gen happen 2020-05-26 00:04:42 -04:00
Richard Feldman
ce9e7a91f6 Clean up some Cargo.toml files 2020-05-03 21:37:59 -04:00
Richard Feldman
1c1fee7e31 Trim trailing space off pretty_assertions dep 2020-04-16 19:24:24 -04:00
Folkert
63bc923b37 remove panic 2020-04-13 22:54:24 +02:00
Folkert
7632a4b484 highlight code snippets better 2020-04-12 20:59:16 +02:00
Folkert
d15bd07bf4 de-alias when diffing with a non-alias
When one of the types in a comparison is an alias, elm does not de-alias it.
That is really annoying if e.g. the alias is of a record and you used an invalid field: the field suggestion error does not kick in
2020-04-11 23:57:00 +02:00
Folkert
2811f978a4 make a Index data type 2020-04-11 20:40:25 +02:00
Folkert
ab19529077 record update hints 2020-04-11 14:55:12 +02:00
Folkert
7e4e3c93d5 cleanup 2020-04-07 21:12:56 +02:00
Folkert
7f999a06f3 add When pattern errors 2020-04-07 18:06:00 +02:00
Folkert
02e42b0abc add from annotation cases 2020-04-06 22:59:21 +02:00
Folkert
2d6e47b8a6 test for record diff 2020-04-06 21:40:54 +02:00
Folkert
5b0d9e693b record update value 2020-04-05 00:15:38 +02:00
Folkert
f8b3d5dce7 elem_in_list 2020-04-05 00:15:38 +02:00
Folkert
200adae507 when_branch_mismatch 2020-04-05 00:15:38 +02:00
Folkert
a2a79925b3 complete add_category 2020-04-03 16:10:41 +02:00
Richard Feldman
98f4f46248 Special-case 2-branch if/else errors 2020-04-03 01:51:42 -04:00
Folkert
1981a7e467 refactor and clean up 2020-04-03 01:20:35 +02:00
Folkert
2e822e739f report circular type error 2020-04-02 23:13:35 +02:00
Folkert
8642cfeae0 report first type error 2020-04-01 23:37:05 +02:00
Folkert
106a3646bf add category to Eq constraint 2020-04-01 20:09:10 +02:00
Folkert
e05bad3c72 remove panic in constrain/src/pattern 2020-03-30 15:09:15 +02:00
Folkert
eca096bf2c disable inlining in unique when branch constraint gen 2020-03-22 01:42:28 +01:00
Folkert
bd7ad318cf fix bug in guard constraint gen 2020-03-21 15:12:01 +01:00
Folkert
920928399a type inference for pattern guards 2020-03-21 00:39:52 +01:00
Folkert
b43be95b19 add record_var to Access and Accessor 2020-03-14 01:13:44 +01:00
Folkert
e62ddc9ef5 make record variable names clearer 2020-03-14 01:01:14 +01:00
Folkert
38c93c001f constrain whole_var 2020-03-13 23:34:29 +01:00
Folkert
e3e84ecb0c fix If bug in uniq constraint gen 2020-03-13 13:06:56 +01:00
Folkert
aeeaf99c17 fix bug in constraint gen for If
the condition expression wasn't actually constrained
2020-03-13 13:06:56 +01:00
Folkert
fb8e8570bc Merge remote-tracking branch 'origin/trunk' into num 2020-03-11 14:30:50 +01:00
Folkert
17348231fd fix uniqueness Num inference
The variable in Num is the `a` in `Num a`. For Int/Float literals, it's a helper variable to generate better error messages
2020-03-11 14:18:26 +01:00
Folkert
9ba09c7d82 use Reason::NumLiteral in uniqueness inference
we can 'just' do that here because there is a var_store available. That isn't true for normal inference, where we would have to put the variable in during solving
2020-03-11 14:07:49 +01:00
Richard Feldman
d4dc0eb683 Implement uniqueness for (Num *) 2020-03-10 22:53:53 -04:00
Richard Feldman
3ecbe0325c Plain number literals (e.g. 5) are now Num * 2020-03-10 22:27:13 -04:00
Folkert
7fea957979 hardcode Bool 2020-03-10 14:50:35 +01:00
Richard Feldman
a2f5f6f9fb Move solve and uniq tests into other crates 2020-03-06 18:24:37 -05:00
Folkert
4848eb5901 refactor introduced variables
This has lead to so many problems, so I made a special-purpose type for it
2020-03-06 23:55:31 +01:00
Folkert
fefac9580e expose rigids introduced by builtins
they aren't used yet, because their names can 'leak'. Not sure what the best way forward is here
2020-03-06 13:48:52 +01:00