Skip to content

Commit 291e872

Browse files
committed
Add missing fold_free_var_const
1 parent f470f2f commit 291e872

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

chalk-solve/src/clauses/generalize.rs

+22-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
use chalk_ir::{
1010
fold::{Fold, Folder},
1111
interner::{HasInterner, Interner},
12-
Binders, BoundVar, DebruijnIndex, Fallible, Lifetime, LifetimeData, NoSolution, Ty, TyKind,
13-
TyVariableKind, VariableKind, VariableKinds,
12+
Binders, BoundVar, Const, ConstData, ConstValue, DebruijnIndex, Fallible, Lifetime,
13+
LifetimeData, NoSolution, Ty, TyKind, TyVariableKind, VariableKind, VariableKinds,
1414
};
1515
use rustc_hash::FxHashMap;
1616

@@ -63,6 +63,26 @@ impl<I: Interner> Folder<I> for Generalize<I> {
6363
Ok(TyKind::BoundVar(new_var).intern(self.interner()))
6464
}
6565

66+
fn fold_free_var_const(
67+
&mut self,
68+
ty: Ty<I>,
69+
bound_var: BoundVar,
70+
outer_binder: DebruijnIndex,
71+
) -> Fallible<Const<I>> {
72+
let binder_vec = &mut self.binders;
73+
let new_index = self.mapping.entry(bound_var).or_insert_with(|| {
74+
let i = binder_vec.len();
75+
binder_vec.push(VariableKind::Const(ty.clone()));
76+
i
77+
});
78+
let new_var = BoundVar::new(outer_binder, *new_index);
79+
Ok(ConstData {
80+
ty,
81+
value: ConstValue::BoundVar(new_var),
82+
}
83+
.intern(self.interner()))
84+
}
85+
6686
fn fold_free_var_lifetime(
6787
&mut self,
6888
bound_var: BoundVar,

0 commit comments

Comments
 (0)