Commit graph

7453 commits

Author SHA1 Message Date
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
b38ff78422
make extension check work again 2022-03-16 22:19:48 +01:00
Folkert
c5fb4f2e47
rewrite and fix builtin alias instantiation 2022-03-16 22:10:04 +01:00
Folkert
f868410a91
also skip opaque aliases for now 2022-03-16 22:09:39 +01:00
Folkert
7fd420bb95
optimize instantiation of builtins 2022-03-16 21:15:54 +01:00
Folkert
64287ea783
disable printing of type clone count 2022-03-16 18:38:55 +01:00
Folkert
d3c6f00c77
use custom default aliases 2022-03-16 18:35:42 +01:00
Folkert
144949b7ca
optimize Float types like integers in solve.rs 2022-03-16 18:35:04 +01:00
Folkert
ad6fd18b05
optimizations for known aliases and identity substitutions 2022-03-16 18:33:53 +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
48b6cd09c7
conditionally use a DelayedAlias 2022-03-16 18:29:40 +01:00
Folkert
f24bfeea99
add some aliases to file.rs 2022-03-16 18:18:45 +01:00
Folkert
7f63e09272
remember recursion variable when making alias recursive 2022-03-16 14:52:34 +01:00
Folkert
1dacf29879
make sure aliases are not forgotten 2022-03-16 14:36:24 +01:00
Folkert
b3dce7317d
hook up aliases 2022-03-15 22:23:40 +01:00
Folkert
7d8409f6a6
write Aliases implementation 2022-03-15 22:02:04 +01:00
ayazhafiz
8aaf614481 Improve error message 2022-03-15 11:18:02 -05:00
ayazhafiz
73396c0607 aliases->references in partial procs 2022-03-15 11:05:59 -05:00
ayazhafiz
787c8ee3a5 s/occurence/occurrence/g 2022-03-14 17:50:55 -05:00
ayazhafiz
8810a48a52 fmt 2022-03-14 17:47:29 -05:00
ayazhafiz
93804bb04c Unnecessary let binding 2022-03-14 17:44:07 -05:00
ayazhafiz
3da34fc843 Report unbound type variables in aliases, opaques
Closes #2726
2022-03-14 17:42:45 -05:00
ayazhafiz
17029cff7e Link aliased lambdas to the partial procs of the original symbol
This ensures that we use the correct specialized variable at the call
site of a function. In #2725 what happened was that a generalized
function was aliased, causing it to undergo generalization again. Then,
we lost the variable used to specialize at the call site. Instead, just
link to the partial proc being aliased directly.

There is an added benefit here, which is that we can avoid the
possibly-quadratic replacement of symbols in the generated statement.

Closes #2725
2022-03-14 16:42:53 -05: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
ayazhafiz
2d01c21b5c Codegen tags that are polymorphic because of rigids
Closes #2724
2022-03-14 15:25:25 -05:00
Folkert
9059e09dca
thread through Aliases 2022-03-14 21:20:35 +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
f9bd46ecb8
fake implementation of type_to_var for DelayedAlias 2022-03-14 20:22:38 +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
Richard Feldman
422a88eced
Merge pull request #2722 from rtfeldman/various-bug-fixes
Various recently filed bug fixes
2022-03-13 22:18:39 -04:00
ayazhafiz
530fa9943a Generate unsigned div and modulo correctly
Closes #2705
2022-03-13 18:44:38 -05:00
ayazhafiz
5670fe06cd Deal with destructuring tag unions behind opaques correctly
Closes #2702
2022-03-13 18:44:38 -05:00
Folkert
872d32652a
remove clone, yay 2022-03-13 22:58:16 +01:00
Folkert
f7ba9918fa
use equal_types_with_storage in opaque type constraining 2022-03-13 22:54:13 +01:00
Folkert
80af910c4f
use equal_types_with_storage in tag constraining 2022-03-13 22:53:22 +01:00
Folkert
7df4465a6e
use equal_types_with_storage in Lambda constraining 2022-03-13 22:47:25 +01:00
Folkert
f23945ad94
use equal_types_with_storage in record constraining 2022-03-13 22:47:07 +01:00
Folkert
6baae55980
add equal_types_with_storage helper 2022-03-13 22:46:41 +01:00
Folkert
e8bf5fa378
prevent clone for all function signatures 2022-03-13 22:35:56 +01:00
Folkert
9a40bcb427
add another comment 2022-03-13 18:32:56 +01:00
Folkert
15ac77567a
make rigid variable introducion more obvious 2022-03-13 18:27:42 +01:00
Folkert
97742b3238
clarify variable name 2022-03-13 17:59:44 +01:00
Folkert
d31ea3e71f
clarify import constraint 2022-03-13 17:59:33 +01:00
Folkert
b3f7b3a337
record referenced types 2022-03-13 17:52:31 +01:00
Folkert
4ef6cba23a
Merge branch 'split-types-values' into type-checking-storage-subs 2022-03-13 17:43:24 +01:00