Add effect_type to can ClosureData

This commit is contained in:
Agus Zubiaga 2024-10-04 20:30:56 -03:00
parent d692fc7c42
commit 386a5055ee
No known key found for this signature in database
13 changed files with 40 additions and 0 deletions

View file

@ -407,6 +407,7 @@ pub struct ClosureData {
pub function_type: Variable,
pub closure_type: Variable,
pub return_type: Variable,
pub effect_type: Variable,
pub early_returns: Vec<(Variable, Region)>,
pub name: Symbol,
pub captured_symbols: Vec<(Symbol, Variable)>,
@ -484,6 +485,7 @@ impl StructAccessorData {
function_type: function_var,
closure_type: closure_var,
return_type: field_var,
effect_type: Variable::PURE,
early_returns: vec![],
name,
captured_symbols: vec![],
@ -558,6 +560,7 @@ impl OpaqueWrapFunctionData {
function_type: function_var,
closure_type: closure_var,
return_type: opaque_var,
effect_type: Variable::PURE,
early_returns: vec![],
name: function_name,
captured_symbols: vec![],
@ -1687,6 +1690,7 @@ fn canonicalize_closure_body<'a>(
function_type: var_store.fresh(),
closure_type: var_store.fresh(),
return_type: return_type_var,
effect_type: var_store.fresh(),
early_returns: scope.early_returns.clone(),
name: symbol,
captured_symbols,
@ -2317,6 +2321,7 @@ pub fn inline_calls(var_store: &mut VarStore, expr: Expr) -> Expr {
function_type,
closure_type,
return_type,
effect_type,
early_returns,
recursive,
name,
@ -2334,6 +2339,7 @@ pub fn inline_calls(var_store: &mut VarStore, expr: Expr) -> Expr {
function_type,
closure_type,
return_type,
effect_type,
early_returns,
recursive,
name,
@ -3184,6 +3190,7 @@ impl Declarations {
function_type: var_store.fresh(),
closure_type: var_store.fresh(),
return_type: var_store.fresh(),
effect_type: var_store.fresh(),
early_returns: vec![],
name: self.symbols[index].value,
captured_symbols: vec![],