Richard Feldman
962e08b10d
Merge pull request #3234 from rtfeldman/toplevel-expect
...
toplevel expect
2022-06-17 10:06:22 -04:00
Folkert
5371f057be
fix empty expect being added
2022-06-16 21:38:12 +02:00
Ayaz Hafiz
5c64e62d89
Correct encoding deriver for records
2022-06-15 14:26:55 -04:00
Ayaz Hafiz
8062b44d11
Add list of lambdas type test
2022-06-15 14:26:55 -04:00
Ayaz Hafiz
cfcfde87d6
Correct incomplete comment
2022-06-15 14:26:54 -04:00
Ayaz Hafiz
f21d68c9fb
Consolidate WorldAbilities and solve Phase
2022-06-13 10:40:36 -04:00
Ayaz Hafiz
bf7d57b23f
Import ability lambda sets from other modules during late solving
...
We're almost there! Just need a way to re-enter already-monomorphized
modules when abilities demand it now.
2022-06-13 08:37:02 -04:00
Ayaz Hafiz
ee6d733cc4
World abilities: big world vs tiny world
...
Normally a module can see all of its abilities, and any module it
depends on (this is the tiny world, i.e. only the world it is aware of).
But when making specializations, a module may need to see all abilities
in all modules (big world). This patch supports big-world viewing of
abilities.
2022-06-13 08:37:00 -04:00
Ayaz Hafiz
0deca3ffb5
Resolve specialization lambda sets in abilities store
2022-06-09 14:20:07 -04:00
Ayaz Hafiz
aa9b70a7c8
Distinguish between pending and resolved ability stores
...
Now that we have unspecialized lambda sets, we need to properly copy
their specialization variables when a module imports another modules'
ability store. I think it will be easier to ensure the correctness if
we distinguish between a "pending" ability store (which may contain
imports whose variables have not been added to subs yet) and "resolved"
abilities stores, which are what we care about for solve and later on.
There is a cost to this since `PendingAbilitiesStore#resolve` destroys
and collects all of the ability member data, rather than in-place
mutating as we did before. However, the resulting `AbilitiesStore` is
now much smaller, so the memory footprint will be better, and also
every field besides `ability_members` will be moved rather than copied.
2022-06-09 12:52:40 -04:00
Ayaz Hafiz
266f56d25b
Internal error when late compaction fails
2022-06-08 14:06:03 -04:00
Folkert de Vries
9ab0a8f41d
Merge pull request #3201 from rtfeldman/addt-uls-fixes
...
Additional unspecialized lambda set fixes and tests
2022-06-08 16:00:30 +02:00
Ayaz Hafiz
5b8d24d823
Use with_capacity
2022-06-07 16:23:42 -04:00
Ayaz Hafiz
7d814564f3
Add recursive ability lambda set resolve tests
2022-06-07 15:00:19 -04:00
Ayaz Hafiz
e1db1c4c76
Handle specializing the same lambda set
2022-06-07 14:53:07 -04:00
Ayaz Hafiz
4b42205b03
Instantiate unspecialized lambda sets under aliases and opaques
2022-06-07 14:41:42 -04:00
Ayaz Hafiz
87a1b3b42d
Clippy is_empty
2022-06-07 12:17:40 -04:00
Ayaz Hafiz
201853ecca
Lambda set compaction in mono
2022-06-07 11:50:39 -04:00
Ayaz Hafiz
caa8c0a9d6
Spellcheck
2022-06-07 10:45:06 -04:00
Ayaz Hafiz
3f3d9d035e
Clippy and format
2022-06-07 10:44:43 -04:00
Ayaz Hafiz
9b4ae7bac1
Deduplicate unspecialized lambda sets by root key
2022-06-07 10:42:19 -04:00
Ayaz Hafiz
90fc08f8df
Compaction of lambda sets must deep copy vars into the right rank
2022-06-07 10:37:13 -04:00
Ayaz Hafiz
6a76951255
Add some tests for unspecialized lambda sets
2022-06-07 09:34:12 -04:00
Ayaz Hafiz
8b78e92051
Include specialization symbols
2022-06-07 08:46:16 -04:00
Ayaz Hafiz
0476d4a65c
Remove unspecialized following unification links
2022-06-07 08:46:16 -04:00
Ayaz Hafiz
4339bfaed6
Print lambda sets on-demand
2022-06-07 08:46:15 -04:00
Ayaz Hafiz
d71fadd8b0
Resolve and compact specialized lambda sets
2022-06-07 08:46:15 -04:00
Ayaz Hafiz
d8888fc696
Bookkeeping for unspecialized lambda sets
2022-06-07 08:46:15 -04:00
Ayaz Hafiz
feea727697
Introduce unspecialized lambda sets to Content::LambdaSet
2022-06-07 08:46:13 -04:00
Ayaz Hafiz
c17525aa4d
Differentiate type variables with the same rigid name during pretty-printing
2022-06-04 15:29:52 -05:00
Folkert
a5b3f9fb50
remove unneeded use of impl Borrow
2022-06-03 19:15:26 +02:00
Ayaz Hafiz
af38860f07
Add Type::UnspecializedLambdaSet variant
2022-06-02 10:12:44 -05:00
Ayaz Hafiz
b0c602eb8d
Clippy
2022-06-02 09:44:38 -05:00
Ayaz Hafiz
bde107da49
Remove TagName
in favor of explicit TagName or Closure
...
Note that we still need a `TagOrClosure` enum for phases past mono, but
at least we get rid of the branches in the front end.
2022-06-02 09:44:34 -05:00
Ayaz Hafiz
a8453b0fca
Fix macro
2022-06-01 13:27:24 -05:00
Ayaz Hafiz
c66f989467
Recursive closure layout working again in effect test
2022-06-01 13:18:54 -05:00
Ayaz Hafiz
2e70c9aba4
Getting closer. Checking in for a break.
2022-06-01 13:18:53 -05:00
Ayaz Hafiz
790eb8e20c
Lambda sets don't need extension vars
2022-06-01 13:18:03 -05:00
Ayaz Hafiz
c2a2ce690c
Lift lambda sets as their own type
...
This prepares for unspecialized lambda set in the type system in
general.
2022-06-01 13:17:22 -05:00
Folkert
9540aa5b70
make deep_copy_var non-recursive
2022-06-01 17:59:35 +02:00
Richard Feldman
4eec34becf
Update to use new square brace formatting
2022-05-22 23:15:54 -04:00
Folkert
98ce9f4d09
remove the snapshots
2022-05-21 20:42:19 +02:00
Folkert de Vries
feaf53371f
Merge pull request #3113 from rtfeldman/new-utable-copy
...
New utable variable copy
2022-05-21 18:17:56 +02:00
Richard Feldman
3cdaa52a30
Merge pull request #3110 from rtfeldman/handcrafted-unification-table
...
Handcrafted unification table
2022-05-21 11:39:58 -04:00
Folkert
722ae9da6b
pass along the specific pool we're adding to
2022-05-21 14:48:45 +02:00
Folkert
1814a69c30
remove closure that is used once
2022-05-21 14:42:48 +02:00
Folkert
8c44661bc2
use set_content_unchecked; replace modify with a single set
2022-05-21 14:06:43 +02:00
Folkert
f1e1c45f2f
some more unchecked operations
2022-05-21 13:52:44 +02:00
Folkert
a1894195d3
refactoring trivial copy detection
2022-05-21 13:48:28 +02:00
Ayaz Hafiz
4a77ce9eca
<clip>
2022-05-20 17:47:21 -04:00