Commit graph

430 commits

Author SHA1 Message Date
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
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
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
Folkert
c7656955f8
add Subs (de)serialization 2022-03-20 20:03:02 +01:00
Folkert
5a4db4b4ad
inline subs operations more aggressively 2022-03-20 15:31:35 +01:00
Folkert
02944bd2f6
simplify logic (iterators are complicated for the rust compiler in debug mode) 2022-03-20 15:31:09 +01:00
Folkert
38c2710fc5
intern common tag names 2022-03-20 15:30:47 +01:00
Folkert
a601b93a46
start of serializing subs 2022-03-20 12:55:14 +01:00
Folkert
f4cb2ec254
inline subs operations more aggressively 2022-03-20 02:07:48 +01:00
hafiz
3f07afe3b5
Merge pull request #2750 from rtfeldman/delay-instantiating-aliases-fix-limitations
Delay instantiating aliases fix limitations
2022-03-19 20:41:14 -04:00
Folkert
147ab87e9c
disable type clone count atomic in release mode 2022-03-19 19:28:24 +01:00
Richard Feldman
5f2054aeb6
Merge pull request #2754 from rtfeldman/remove-type-solvedtype-conversion
Remove Type/Subs -> SolvedType conversion
2022-03-19 10:48:42 -04:00
Folkert
5a15a121ff
remove Content -> SolvedType conversion 2022-03-19 12:26:21 +01:00
Folkert
da0c6adff3
remove Type -> SolvedType conversion 2022-03-19 12:20:15 +01:00
Folkert
21a51464f3
various small type-related changes 2022-03-18 22:35:12 +01:00
Folkert
bf063d1d57
use all aliases that are in scope (to support imported aliases) 2022-03-18 20:44:13 +01:00
Folkert
5196ae9df2
use old alias instantiation when checking for invalid recursion 2022-03-18 20:20:22 +01:00
Folkert
2b2db5e4fe
fix variable name 2022-03-18 20:13:48 +01:00
Folkert
a4ce6815d2
clarify variable name 2022-03-18 20:03:03 +01:00
Folkert
fc83865465
deal with the lambda set in more cases 2022-03-18 18:53:17 +01:00
Folkert
a3b00fbf55
Merge branch 'explicit-closed-tag-record' into delay-instantiating-aliases 2022-03-17 20:34:52 +01:00
Folkert
be07cbe49d
remove instrumentation 2022-03-17 19:48:35 +01:00
Folkert
b1612384c7
implement constrain crate 2022-03-17 19:17:52 +01:00
Folkert
34e566965d
implement can crate 2022-03-17 19:04:24 +01:00
Folkert
4545e76b76
implement in the types crate 2022-03-17 19:00:08 +01:00
Folkert
3d5a93a4e6
make substitute use an explicit stack 2022-03-17 18:33:00 +01:00
Folkert
8144d7b390
the setup 2022-03-17 18:24:22 +01:00
Folkert
fc233d2a4f
clippy 2022-03-16 23:05:07 +01:00
Folkert
7c3f3585bb
fix spelling error 2022-03-16 23:02:38 +01:00
Folkert
7fd420bb95
optimize instantiation of builtins 2022-03-16 21:15:54 +01:00
Folkert
144949b7ca
optimize Float types like integers in solve.rs 2022-03-16 18:35:04 +01:00
Folkert
dab804dca1
record how many clones of Type occur 2022-03-16 18:30:59 +01:00
Folkert
d187d43a0c
add a bunch of implementations of Type functions for DelayedAlias 2022-03-16 18:30:46 +01:00
Folkert
7d8409f6a6
write Aliases implementation 2022-03-15 22:02:04 +01:00
Folkert
a66d23f93d
add substitute_variable 2022-03-14 22:23:26 +01:00
Folkert
18ca42d767
make Type::substitute use an explicit stack 2022-03-14 22:20:59 +01:00
Folkert
0c5e4df215
remember which variables went where 2022-03-14 21:11:35 +01:00
Folkert
6838891d1b
refactor deep_copy_var_to 2022-03-14 21:08:40 +01:00
Folkert
00f3eaf2a1
thread through DelayedAlias 2022-03-14 19:47:19 +01:00
Folkert
7127157962
refactor 2022-03-14 19:21:38 +01:00
Folkert
9a40bcb427
add another comment 2022-03-13 18:32:56 +01:00