Commit graph

386 commits

Author SHA1 Message Date
Folkert
27269faa0b optimize alias to var conversion 2021-12-01 18:39:45 +01:00
rvcas
40090f20e6 test: update tests to use Num.toStr 2021-11-30 14:56:08 -05:00
Richard Feldman
d39ecfd12d
Merge pull request #2052 from rtfeldman/i/1931-2
Some improvements to error messages regarding unbound type variables
2021-11-26 21:17:37 -05:00
Folkert
6934e69240 make deep_copy_var_to allocate less 2021-11-27 02:09:08 +01:00
Folkert
471593ea31 make deep_copy_var use scratchpad arena 2021-11-27 01:32:47 +01:00
Folkert
2d0d54e13e try stack allocation for small vectors 2021-11-27 01:31:48 +01:00
Folkert
b4f21930bb cleanup 2021-11-25 20:49:44 +01:00
Folkert
612f868652 make VariableSubsSlice an alias 2021-11-25 20:29:34 +01:00
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
hafiz
b3ecc16b16
Merge pull request #2050 from rtfeldman/empty-tags-and-unions
Canonicalize to empty tags and unions
2021-11-22 08:00:07 -06:00
ayazhafiz
1135d88dd0 Add support for type inference at _s in type definitions
All we have to do is introduce a new, unconstrained type variable at
underscore sites, and let the type reconstructor work its magic! The
unconstrained type variable will become a `FlexVar` that absorbs
constraints given to it, so it'll behave like a proper inference
variable. That's it!

Part of #1804
2021-11-21 22:54:45 -05: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 de Vries
a4fc813ca3
Merge pull request #2002 from rtfeldman/builtins-list-intersperse
Add builtin `List.intersperse`
2021-11-18 22:00:10 +01:00
satotake
ce8a88416d Merge branch 'trunk' into builtins-list-intersperse 2021-11-18 11:16:27 +00:00
Folkert
0199c00936 Merge remote-tracking branch 'origin/trunk' into deep-copy-var-to 2021-11-17 22:34:46 +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
237d8d1c0b fix the Default instance for subs
we later rely on some variables always existing (numbers, empty record, empty tag union)
but the default instance did not insert those
2021-11-17 16:29:16 +01:00
satotake
16fb04b4fa Add builtin List.intersperse 2021-11-17 15:18:45 +00:00
Folkert
849510c42c WIP 2021-11-16 23:55:11 +01:00