@@ -15,7 +15,7 @@ use stdx::never;
15
15
use crate :: {
16
16
db:: HirDatabase , infer:: InferenceContext , layout:: layout_of_ty, lower:: ParamLoweringMode ,
17
17
to_placeholder_idx, utils:: Generics , Const , ConstData , ConstScalar , ConstValue , GenericArg ,
18
- Interner , MemoryMap , Ty , TyBuilder ,
18
+ Interner , MemoryMap , Substitution , Ty , TyBuilder ,
19
19
} ;
20
20
21
21
use super :: mir:: { interpret_mir, lower_to_mir, pad16, MirEvalError , MirLowerError } ;
@@ -169,6 +169,7 @@ pub(crate) fn const_eval_recover(
169
169
_: & dyn HirDatabase ,
170
170
_: & [ String ] ,
171
171
_: & ConstId ,
172
+ _: & Substitution ,
172
173
) -> Result < Const , ConstEvalError > {
173
174
Err ( ConstEvalError :: MirLowerError ( MirLowerError :: Loop ) )
174
175
}
@@ -184,10 +185,11 @@ pub(crate) fn const_eval_discriminant_recover(
184
185
pub ( crate ) fn const_eval_query (
185
186
db : & dyn HirDatabase ,
186
187
const_id : ConstId ,
188
+ subst : Substitution ,
187
189
) -> Result < Const , ConstEvalError > {
188
190
let def = const_id. into ( ) ;
189
191
let body = db. mir_body ( def) ?;
190
- let c = interpret_mir ( db, & body, false ) ?;
192
+ let c = interpret_mir ( db, & body, subst , false ) ?;
191
193
Ok ( c)
192
194
}
193
195
@@ -210,7 +212,7 @@ pub(crate) fn const_eval_discriminant_variant(
210
212
return Ok ( value) ;
211
213
}
212
214
let mir_body = db. mir_body ( def) ?;
213
- let c = interpret_mir ( db, & mir_body, false ) ?;
215
+ let c = interpret_mir ( db, & mir_body, Substitution :: empty ( Interner ) , false ) ?;
214
216
let c = try_const_usize ( & c) . unwrap ( ) as i128 ;
215
217
Ok ( c)
216
218
}
@@ -234,7 +236,7 @@ pub(crate) fn eval_to_const(
234
236
}
235
237
let infer = ctx. clone ( ) . resolve_all ( ) ;
236
238
if let Ok ( mir_body) = lower_to_mir ( ctx. db , ctx. owner , & ctx. body , & infer, expr) {
237
- if let Ok ( result) = interpret_mir ( db, & mir_body, true ) {
239
+ if let Ok ( result) = interpret_mir ( db, & mir_body, Substitution :: empty ( Interner ) , true ) {
238
240
return result;
239
241
}
240
242
}
0 commit comments