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 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); let mut rank = adjust_rank(subs, young_mark, visit_mark, group_rank, ret_var);
// TODO investigate further. // TODO investigate further.
@ -1129,13 +1129,15 @@ fn adjust_rank_content(
// My theory is that because the closure_var contains variables already // 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 // contained in the signature only, it does not need to be part of the rank
// calculuation // calculuation
// rank = rank.max(adjust_rank( if false {
// subs, rank = rank.max(adjust_rank(
// young_mark, subs,
// visit_mark, young_mark,
// group_rank, visit_mark,
// closure_var, group_rank,
// )); closure_var,
));
}
for var in arg_vars { for var in arg_vars {
rank = rank.max(adjust_rank(subs, young_mark, visit_mark, group_rank, var)); 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())); problems.extend(merge(subs, &ctx, other_content.clone()));
if problems.is_empty() {
problems.extend(unify_pool(subs, pool, real_var, *other_real_var))
}
problems problems
} else { } else {
mismatch!() mismatch!()