@@ -5,7 +5,7 @@ mod tests;
55
66use base_db:: Crate ;
77use hir_def:: {
8- EnumVariantId , GeneralConstId , HasModule , StaticId ,
8+ ConstId , EnumVariantId , StaticId ,
99 expr_store:: Body ,
1010 hir:: { Expr , ExprId } ,
1111 type_ref:: LiteralConstRef ,
@@ -139,16 +139,18 @@ pub fn try_const_usize<'db>(db: &'db dyn HirDatabase, c: Const<'db>) -> Option<u
139139 ConstKind :: Infer ( _) => None ,
140140 ConstKind :: Bound ( _, _) => None ,
141141 ConstKind :: Placeholder ( _) => None ,
142- ConstKind :: Unevaluated ( unevaluated_const) => {
143- let c = match unevaluated_const. def {
144- SolverDefId :: ConstId ( id) => GeneralConstId :: ConstId ( id) ,
145- SolverDefId :: StaticId ( id) => GeneralConstId :: StaticId ( id) ,
146- _ => unreachable ! ( ) ,
147- } ;
148- let subst = unevaluated_const. args ;
149- let ec = db. const_eval ( c, subst, None ) . ok ( ) ?;
150- try_const_usize ( db, ec)
151- }
142+ ConstKind :: Unevaluated ( unevaluated_const) => match unevaluated_const. def {
143+ SolverDefId :: ConstId ( id) => {
144+ let subst = unevaluated_const. args ;
145+ let ec = db. const_eval ( id, subst, None ) . ok ( ) ?;
146+ try_const_usize ( db, ec)
147+ }
148+ SolverDefId :: StaticId ( id) => {
149+ let ec = db. const_eval_static ( id) . ok ( ) ?;
150+ try_const_usize ( db, ec)
151+ }
152+ _ => unreachable ! ( ) ,
153+ } ,
152154 ConstKind :: Value ( val) => Some ( u128:: from_le_bytes ( pad16 ( & val. value . inner ( ) . memory , false ) ) ) ,
153155 ConstKind :: Error ( _) => None ,
154156 ConstKind :: Expr ( _) => None ,
@@ -161,16 +163,18 @@ pub fn try_const_isize<'db>(db: &'db dyn HirDatabase, c: &Const<'db>) -> Option<
161163 ConstKind :: Infer ( _) => None ,
162164 ConstKind :: Bound ( _, _) => None ,
163165 ConstKind :: Placeholder ( _) => None ,
164- ConstKind :: Unevaluated ( unevaluated_const) => {
165- let c = match unevaluated_const. def {
166- SolverDefId :: ConstId ( id) => GeneralConstId :: ConstId ( id) ,
167- SolverDefId :: StaticId ( id) => GeneralConstId :: StaticId ( id) ,
168- _ => unreachable ! ( ) ,
169- } ;
170- let subst = unevaluated_const. args ;
171- let ec = db. const_eval ( c, subst, None ) . ok ( ) ?;
172- try_const_isize ( db, & ec)
173- }
166+ ConstKind :: Unevaluated ( unevaluated_const) => match unevaluated_const. def {
167+ SolverDefId :: ConstId ( id) => {
168+ let subst = unevaluated_const. args ;
169+ let ec = db. const_eval ( id, subst, None ) . ok ( ) ?;
170+ try_const_isize ( db, & ec)
171+ }
172+ SolverDefId :: StaticId ( id) => {
173+ let ec = db. const_eval_static ( id) . ok ( ) ?;
174+ try_const_isize ( db, & ec)
175+ }
176+ _ => unreachable ! ( ) ,
177+ } ,
174178 ConstKind :: Value ( val) => Some ( i128:: from_le_bytes ( pad16 ( & val. value . inner ( ) . memory , true ) ) ) ,
175179 ConstKind :: Error ( _) => None ,
176180 ConstKind :: Expr ( _) => None ,
@@ -254,7 +258,7 @@ pub(crate) fn eval_to_const<'db>(expr: ExprId, ctx: &mut InferenceContext<'_, 'd
254258
255259pub ( crate ) fn const_eval_cycle_result < ' db > (
256260 _: & ' db dyn HirDatabase ,
257- _: GeneralConstId ,
261+ _: ConstId ,
258262 _: GenericArgs < ' db > ,
259263 _: Option < Arc < TraitEnvironment < ' db > > > ,
260264) -> Result < Const < ' db > , ConstEvalError < ' db > > {
@@ -277,19 +281,11 @@ pub(crate) fn const_eval_discriminant_cycle_result<'db>(
277281
278282pub ( crate ) fn const_eval_query < ' db > (
279283 db : & ' db dyn HirDatabase ,
280- def : GeneralConstId ,
284+ def : ConstId ,
281285 subst : GenericArgs < ' db > ,
282286 trait_env : Option < Arc < TraitEnvironment < ' db > > > ,
283287) -> Result < Const < ' db > , ConstEvalError < ' db > > {
284- let body = match def {
285- GeneralConstId :: ConstId ( c) => {
286- db. monomorphized_mir_body ( c. into ( ) , subst, db. trait_environment ( c. into ( ) ) ) ?
287- }
288- GeneralConstId :: StaticId ( s) => {
289- let krate = s. module ( db) . krate ( ) ;
290- db. monomorphized_mir_body ( s. into ( ) , subst, TraitEnvironment :: empty ( krate) ) ?
291- }
292- } ;
288+ let body = db. monomorphized_mir_body ( def. into ( ) , subst, db. trait_environment ( def. into ( ) ) ) ?;
293289 let c = interpret_mir ( db, body, false , trait_env) ?. 0 ?;
294290 Ok ( c)
295291}
0 commit comments