ayazhafiz
d352d2cdf8
Revert "Include annotation type signatures in Expected
struct"
...
This reverts commit 6e4fd5f06a1ae6138659b0073b4e2b375a499588.
This idea didn't work out because cloning the type and storing it on a
variable still resulted in the solver trying to uify the variable with
the type. When there were errors, which there certainly would be if we
tried to unify the variable with a structure that had nested flex/rigid
vars, the nested flex/rigid vars would inherit those errors, and the
program wouldn't typecheck.
Since the motivation here was to expose the signature type to
`reporting` so that we could modify it with suggestions, we should
instead pass that information along in something analogous to the
`Expected` struct.
2021-11-25 13:24:42 -05:00
ayazhafiz
a8e38172ac
Remove redundant refs
2021-11-25 11:22:19 -05:00
ayazhafiz
ee34e79790
Include annotation type signatures in Expected
struct
...
To provide better error messages and suggestions related to changing
type annotations, we now pass annotation type signatures all the way
down through the constraint solver. At constraint generation we
associate the type signature with a unique variable, and during error
reporting, we pull out an `ErrorType` corresponding to the original type
signature, by looking up the unique variable. This gives us two nice
things:
1. It means we don't have to pass the original, AST-like type
annotation, which can be quite large, to everyone who looks at an
expectation.
2. It gives us a translation from a `Type` to an `ErrorType` for free
using the existing translation procedure in `roc_types::subs`,
without having to create a new translation function.
2021-11-25 11:16:17 -05:00
Richard Feldman
618925fe27
Fix typo in comment
2021-11-24 23:17:24 -05:00
Folkert
093b733a2c
add tag name dedup
2021-11-25 00:11:11 +01:00
Folkert
7c2e8cd812
optimize NAT
2021-11-24 23:00:03 +01:00
Folkert
9c551a0276
use insertion sort
2021-11-24 22:55:45 +01:00
Folkert
e0d7c54906
simplify alias insertion
2021-11-24 22:39:42 +01:00
Folkert
4e4f827bb0
simplify function-or-tag-union insertion
2021-11-24 22:11:05 +01:00
Folkert
379abeed26
refactor tag insertion
2021-11-24 21:57:19 +01:00
Folkert
340055fca5
point to empty VariableSubsSlice
2021-11-24 21:57:00 +01:00
Folkert
cb8e9acb92
special-case the closure tags
2021-11-24 21:14:58 +01:00
Folkert
3e640f78bf
cleanup
2021-11-24 20:44:51 +01:00
Folkert
308b91153e
add faster insertion path for tag unions
2021-11-24 20:38:52 +01:00
Folkert
541dd9777a
thread_local experiment
2021-11-24 19:59:53 +01:00
Folkert
f1541d56bd
use Entry in some places
2021-11-24 19:45:30 +01:00
Folkert
5e76e3a97e
more reserving into subs
2021-11-24 19:14:37 +01:00
Folkert
739ae60b1e
clean up usage of reserve_into_subs
2021-11-24 18:52:22 +01:00
Folkert
61f6687dea
fix using the wrong length
2021-11-24 18:50:47 +01:00
Folkert
1fbd2a7e7b
reserve variable slices
2021-11-24 16:02:55 +01:00
Folkert
a0c9270124
keep track of visited variables in deep_copy_var
2021-11-24 15:14:17 +01:00
Folkert de Vries
6944c900c2
Merge pull request #2065 from rtfeldman/alias-remove-lowercases
...
Alias remove lowercases
2021-11-23 10:21:05 +01:00
hafiz
682043c16c
Merge pull request #2063 from rtfeldman/type-to-var-prealloc
...
preallocate variables to prevent extra vector allocations
2021-11-22 20:05:16 -06:00
Folkert
b2aa33f839
Merge remote-tracking branch 'origin/trunk' into alias-remove-lowercases
2021-11-22 21:19:27 +01:00
Folkert
2c1005fdf0
remove lowercases from Content
2021-11-22 21:15:58 +01:00
Folkert
2506875970
preallocate variables to prevent extra vector allocations
2021-11-22 20:17:03 +01:00
Folkert
8afdf282cb
assert that no tag union or record with no fields/tags makes it into Subs
2021-11-21 22:25:03 +01:00
Folkert
594e754e1e
manually track visited varibles in deep_copy_var_to
2021-11-20 01:39:57 +01:00
Folkert
2bccc2d28d
optimize instantiate_rigids_help
2021-11-20 01:26:17 +01:00
Folkert
497bc2db02
make instantiate_rigids_help use a loop/stack
2021-11-20 00:24:46 +01:00
Folkert
eb9bb12725
bumpalo type_to_var
2021-11-19 19:48:51 +01:00
Folkert
2810c1fc52
clean up instantiate_rigids
2021-11-19 17:51:05 +01:00
Folkert
206c8889df
Use StorageSubs for pending specializations
2021-11-19 13:22:17 +01:00
Folkert
65e0866d0a
add assert; a returned copy must always be in the target subs
2021-11-17 16:32:20 +01:00
Folkert
849510c42c
WIP
2021-11-16 23:55:11 +01:00
Folkert
7c4300a7a1
clarify what pending means
2021-11-15 22:43:32 +01:00
Folkert
db081cd84b
WIP
2021-11-15 20:12:48 +01:00
Folkert
6d833845f9
fix typo
2021-08-14 00:53:18 +02:00
Folkert
3e448c1b74
get rid of inefficient conversion from mutmap to uniontags
2021-08-14 00:32:01 +02:00
Folkert
4cbb1c9b25
optimize initial tag union creation
2021-08-13 23:53:27 +02:00
Folkert
df83bf0d48
Merge remote-tracking branch 'origin/soa-alias' into alias-nominal-equality
2021-08-13 12:11:36 +02:00
Folkert
c9040c012e
make things work
2021-08-13 11:04:31 +02:00
Folkert
42f04fcc77
use variablesubsslice for Apply
2021-08-12 22:49:56 +02:00
Folkert
3bbf1a5506
use UnionTags for recursive tag unions
2021-08-12 20:50:33 +02:00
Folkert
6c0860b6bf
milestone all but one gen tests passing
2021-08-11 21:50:11 +02:00
Folkert
0e66995437
Merge remote-tracking branch 'origin/trunk' into tags-soa-phase-0
2021-08-11 17:25:00 +02:00
Folkert
83ad331bb1
remove chase_record_ext_var
2021-08-07 15:35:57 +02:00
Richard Feldman
49aa0b8ffd
Eliminate a Vec in record solving
2021-08-07 08:35:43 -04:00
Folkert
7a44572ebc
make occurs return Result to use the ? operator
2021-08-07 13:56:16 +02:00
Folkert
ad3d006a11
use a SubsIndex instead of Box
2021-08-07 13:50:53 +02:00