Mark flex fx vars as pure after solving body

This commit is contained in:
Agus Zubiaga 2024-10-22 00:19:22 -03:00
parent 89a918cebe
commit 2859829ea8
No known key found for this signature in database
3 changed files with 33 additions and 0 deletions

View file

@ -243,6 +243,7 @@ fn constrain_untyped_closure(
),
early_returns_constraint,
closure_constraint,
Constraint::FlexToPure(fx_var),
];
constraints.exists_many(vars, cons)
@ -3042,6 +3043,7 @@ fn constrain_typed_def(
constraints.store(signature_index, *fn_var, std::file!(), std::line!()),
constraints.store(signature_index, expr_var, std::file!(), std::line!()),
closure_constraint,
Constraint::FlexToPure(fx_var),
];
let expr_con = constraints.exists_many(vars, cons);
@ -4022,6 +4024,7 @@ fn constraint_recursive_function(
constraints.store(signature_index, expr_var, std::file!(), std::line!()),
constraints.store(ret_type_index, ret_var, std::file!(), std::line!()),
closure_constraint,
Constraint::FlexToPure(fx_var),
];
let and_constraint = constraints.and_constraint(cons);