always unify full alias body, even when alias names match

This commit is contained in:
Folkert 2020-10-18 21:16:22 +02:00
parent fd77a18908
commit 81af929f8f
2 changed files with 14 additions and 8 deletions

View file

@ -1121,7 +1121,7 @@ fn adjust_rank_content(
rank
}
Func(arg_vars, _closure_var, ret_var) => {
Func(arg_vars, closure_var, ret_var) => {
let mut rank = adjust_rank(subs, young_mark, visit_mark, group_rank, ret_var);
// TODO investigate further.
@ -1129,13 +1129,15 @@ fn adjust_rank_content(
// My theory is that because the closure_var contains variables already
// contained in the signature only, it does not need to be part of the rank
// calculuation
// rank = rank.max(adjust_rank(
// subs,
// young_mark,
// visit_mark,
// group_rank,
// closure_var,
// ));
if false {
rank = rank.max(adjust_rank(
subs,
young_mark,
visit_mark,
group_rank,
closure_var,
));
}
for var in arg_vars {
rank = rank.max(adjust_rank(subs, young_mark, visit_mark, group_rank, var));

View file

@ -179,6 +179,10 @@ fn unify_alias(
problems.extend(merge(subs, &ctx, other_content.clone()));
if problems.is_empty() {
problems.extend(unify_pool(subs, pool, real_var, *other_real_var))
}
problems
} else {
mismatch!()