Commit graph

481 commits

Author SHA1 Message Date
Ayaz Hafiz
2020d5f30f
Format 2022-04-25 13:16:44 -04:00
Ayaz
ccaddcebbb
Merge branch 'trunk' into remove-private-tags 2022-04-25 13:14:42 -04:00
Ayaz Hafiz
55706ae5c4
Remove other references to private tags in code 2022-04-25 11:50:00 -04:00
Ayaz Hafiz
cf8409dfaa
Remove private tag variants 2022-04-25 11:38:54 -04:00
Ayaz
53c8dee4ed
Merge pull request #2926 from rtfeldman/matrix-correct-mutual-type-alias
Matrix correct mutual type alias
2022-04-25 11:19:59 -04:00
Ayaz Hafiz
b6383f81ee
Numbers are opaques 2022-04-25 10:59:42 -04:00
Ayaz Hafiz
f5b0b0219e
Remove hack 2022-04-25 10:59:42 -04:00
Ayaz Hafiz
caf65ba2f8
Fix codegen of effect symbols 2022-04-25 10:59:42 -04:00
Ayaz Hafiz
23bbe0863b
Fix effect module 2022-04-25 10:59:41 -04:00
Ayaz
64ed7eea95
Merge branch 'trunk' into fix-when-branch-solving 2022-04-24 12:19:22 -04:00
Folkert
b0ceaf0372
instantiate aliases with a function 2022-04-24 01:04:59 +02:00
Ayaz Hafiz
435781aa5b
Static assertions that certain types implement Copy 2022-04-23 10:56:54 -04:00
Ayaz Hafiz
633bdd5520
Fix failing reporting tests 2022-04-23 10:56:54 -04:00
Ayaz Hafiz
1e1ffb2f62
Bugfix use root var 2022-04-22 17:57:01 -04:00
Ayaz Hafiz
b61481c6e7
Try another strategy - fix recursion vars during typechecking 2022-04-22 17:57:01 -04:00
Ayaz Hafiz
b0aafd762a
Show more type information in pretty printing 2022-04-22 17:57:01 -04:00
Richard Feldman
058bfdb8d0
Improve perf of finding type new type variables 2022-04-20 21:39:09 -04:00
Ayaz Hafiz
a07323fb40
Typecheck annotations with able variables outside ability members 2022-04-20 17:43:16 -04:00
Folkert
5501787e64
delete unused code 2022-04-17 13:53:17 +02:00
Folkert
e112f6ad2c
Merge remote-tracking branch 'origin/trunk' into builtins-in-roc 2022-04-16 21:01:51 +02:00
Sean Hagstrom
37d3e355ca refactor the logic for pretty printing float types into one function 2022-04-15 16:37:39 +01:00
Sean Hagstrom
c67a1bb8d4 fix(repl) and fix(pretty_print): update pretty_print output for Num FloatingPoint * to be Float * instead of F64 2022-04-15 16:37:39 +01:00
Ayaz Hafiz
491ec0034a
Don't try to send type problems over module boundaries
Closes #2863
Closes #2858
2022-04-15 10:01:26 -04:00
Richard Feldman
4ea4aa4708
Merge pull request #2838 from rtfeldman/abilities-typechecking
Inference and checking for abilities
2022-04-13 22:03:44 -04:00
Ayaz Hafiz
6343382af5
Propogate errors in record fields to layout error
Closes #2812

Unfortunately we don't have a great way to test this without scaffolding
a host since this happens while processing a variable exposed to the
host. In tests the root cause just yields a type error first and codegen
works, just bails during the runtime. But this works.
2022-04-13 16:23:13 -04:00
Ayaz Hafiz
d94556d807
Report overly general specializations 2022-04-12 18:52:49 -04:00
Ayaz Hafiz
15a040ec87
Basic type inference and solving for abilities
Note that is still pretty limited. We only permit opaque types to
implement abilities, abilities cannot have type arguments, and also no
other functions may depend on abilities
2022-04-12 16:18:07 -04:00
Folkert
6ef443d1b0
Merge remote-tracking branch 'origin/trunk' into builtins-in-roc 2022-04-10 19:14:00 +02:00
Folkert
166c949c3b
clippy 2022-04-09 12:24:12 +02:00
Ayaz
69ed0b755a
Merge pull request #2804 from rtfeldman/abilities-canonicalization
Basic canonicalization, error checking for abilities
2022-04-08 12:00:23 -04:00
Folkert
1d0f9e9192
Merge remote-tracking branch 'origin/trunk' into builtins-in-roc 2022-04-08 15:47:11 +02:00
Ayaz Hafiz
17b3c7d8ee
Generate type variables when there are lots
Closes #2797
2022-04-07 17:49:48 -04:00
Ayaz Hafiz
66ec1b4a84 Basic canonicalization and error checking for abilities 2022-04-07 17:21:17 -04:00
Ayaz Hafiz
72b93e51f1
Bugfix 2022-04-05 18:08:24 -04:00
Ayaz Hafiz
886e5a0c8f
Don't unify real vars when there are no type variables, or nothing changed 2022-04-05 17:51:30 -04:00
Ayaz Hafiz
163c6b39d6
Unify type alias "real variables"
Turns out that we can't always assume that a successful unification of
type alias type variables means that those aliases had the same real
type from the start. Because type variables may contain unbound type
variables and grow during their unification (for example,
`[InvalidNumStr]a ~ [ListWasEmpty]b` unify to give `[InvalidNumStr,
ListWasEmpty]`), the real type may grow as well.

For this reason, continue to explicitly unify alias real types for now.
We can get away with not having to do so when the type variable
unification causes no changes to the unification tree at all, but we
don't have a great way to detect that right now (maybe snapshots?)

Closes #2583
2022-04-05 11:21:52 -04:00
Folkert
0dd2cec09a
update with new clippy lints 2022-03-31 19:34:51 +02:00
Folkert
9dbaa0d157
change type to ensure alignment 2022-03-26 22:04:22 +01:00
Folkert
9c9a238be5
make subs serialziation cross-compile proof 2022-03-26 20:31:41 +01:00
Folkert
753d1418ed
fix copy/paste mistake 2022-03-23 21:19:37 +01:00
Folkert
8e73f447df
store exposed_vars_by_symbol in .dat file too 2022-03-23 21:19:35 +01:00
Folkert
1e6cf3f313
properly serialize tag names 2022-03-23 21:19:35 +01:00
Folkert
5f19410de6
Merge branch 'simplify-unused-defs' into builtins-in-roc 2022-03-21 23:45:09 +01:00
Folkert
dc3841ec10
cleanup 2022-03-21 21:13:18 +01:00
Folkert
4c37b6f5fb
properly serialize tag names 2022-03-21 19:45:53 +01:00
Folkert
a9982a30aa
WIP 2022-03-21 19:23:13 +01:00
Richard Feldman
68adeba43c
Merge pull request #2758 from rtfeldman/intern-tag-names
handle common tag names in type -> subs conversion
2022-03-20 20:39:46 -04:00
Folkert
e36b1e2208
Merge branch 'serialize-subs' into builtins-in-roc 2022-03-20 21:46:57 +01:00
Folkert
715d58cf83
serialize field names properly 2022-03-20 21:30:09 +01:00
Folkert
b6f7f77aae
Revert "inline subs operations more aggressively"
This reverts commit f4cb2ec254.

it'll be merged by a different PR
2022-03-20 20:12:20 +01:00