diff --git a/compiler/solve/src/solve.rs b/compiler/solve/src/solve.rs index 901c61129b..7d1ad699a9 100644 --- a/compiler/solve/src/solve.rs +++ b/compiler/solve/src/solve.rs @@ -2583,8 +2583,10 @@ fn pool_to_rank_table( // the vast majority of young variables have young_rank let mut i = 0; while i < young_vars.len() { - let var = young_vars[i]; - let rank = subs.get_rank_set_mark(var, young_mark); + let var = subs.get_root_key(young_vars[i]); + + subs.set_mark_unchecked(var, young_mark); + let rank = subs.get_rank_unchecked(var); if rank != young_rank { debug_assert!(rank.into_usize() < young_rank.into_usize() + 1); diff --git a/compiler/types/src/unification_table.rs b/compiler/types/src/unification_table.rs index 20f3f341e1..9f2f95a223 100644 --- a/compiler/types/src/unification_table.rs +++ b/compiler/types/src/unification_table.rs @@ -118,6 +118,7 @@ impl UnificationTable { self.marks[key.index() as usize] } + #[allow(unused)] #[inline(always)] pub fn get_copy_unchecked(&self, key: Variable) -> OptVariable { self.copies[key.index() as usize] @@ -163,11 +164,13 @@ impl UnificationTable { self.marks[key.index() as usize] = value; } + #[allow(unused)] #[inline(always)] pub fn set_copy_unchecked(&mut self, key: Variable, value: OptVariable) { self.copies[key.index() as usize] = value; } + #[allow(unused)] #[inline(always)] pub fn set_content_unchecked(&mut self, key: Variable, value: Content) { self.contents[key.index() as usize] = value;