Attach ambient function vars to lambda sets

This commit is contained in:
Ayaz Hafiz 2022-07-05 09:23:59 -04:00
parent 7365da6f69
commit 5d74a376af
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
14 changed files with 233 additions and 47 deletions

View file

@ -143,6 +143,7 @@ fn constrain_untyped_closure(
constraints,
name,
region,
fn_var,
captured_symbols,
closure_var,
&mut vars,
@ -911,6 +912,7 @@ pub fn constrain_expr(
let lambda_set = Type::ClosureTag {
name: *closure_name,
captures: vec![],
ambient_function: *function_var,
};
let closure_type = Type::Variable(*closure_var);
@ -1390,6 +1392,7 @@ fn constrain_function_def(
constraints,
loc_symbol.value,
region,
expr_var,
&function_def.captured_symbols,
closure_var,
&mut vars,
@ -2040,6 +2043,7 @@ fn constrain_typed_def(
constraints,
*name,
region,
*fn_var,
captured_symbols,
closure_var,
&mut vars,
@ -2514,6 +2518,7 @@ fn constrain_closure_size(
constraints: &mut Constraints,
name: Symbol,
region: Region,
ambient_function: Variable,
captured_symbols: &[(Symbol, Variable)],
closure_var: Variable,
variables: &mut Vec<Variable>,
@ -2542,6 +2547,7 @@ fn constrain_closure_size(
let closure_type = Type::ClosureTag {
name,
captures: captured_types,
ambient_function,
};
let finalizer = constraints.equal_types_var(
@ -2811,6 +2817,7 @@ fn constraint_recursive_function(
constraints,
loc_symbol.value,
region,
expr_var,
&function_def.captured_symbols,
closure_var,
&mut vars,
@ -3220,6 +3227,7 @@ fn rec_defs_help(
constraints,
*name,
region,
*fn_var,
captured_symbols,
closure_var,
&mut vars,