Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/consteval.rs')
-rw-r--r--crates/hir-ty/src/consteval.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/crates/hir-ty/src/consteval.rs b/crates/hir-ty/src/consteval.rs
index 9ff788c2e2..c294238030 100644
--- a/crates/hir-ty/src/consteval.rs
+++ b/crates/hir-ty/src/consteval.rs
@@ -8,7 +8,7 @@ use hir_def::{
ConstId, EnumVariantId, GeneralConstId, HasModule, StaticId,
attrs::AttrFlags,
builtin_type::{BuiltinInt, BuiltinType, BuiltinUint},
- expr_store::Body,
+ expr_store::ExpressionStore,
hir::{Expr, ExprId, Literal},
};
use hir_expand::Lookup;
@@ -311,23 +311,23 @@ pub(crate) fn const_eval_discriminant_variant(
// and make this function private. See the fixme comment on `InferenceContext::resolve_all`.
pub(crate) fn eval_to_const<'db>(expr: ExprId, ctx: &mut InferenceContext<'_, 'db>) -> Const<'db> {
let infer = ctx.fixme_resolve_all_clone();
- fn has_closure(body: &Body, expr: ExprId) -> bool {
- if matches!(body[expr], Expr::Closure { .. }) {
+ fn has_closure(store: &ExpressionStore, expr: ExprId) -> bool {
+ if matches!(store[expr], Expr::Closure { .. }) {
return true;
}
let mut r = false;
- body.walk_child_exprs(expr, |idx| r |= has_closure(body, idx));
+ store.walk_child_exprs(expr, |idx| r |= has_closure(store, idx));
r
}
- if has_closure(ctx.body, expr) {
+ if has_closure(ctx.store, expr) {
// Type checking clousres need an isolated body (See the above FIXME). Bail out early to prevent panic.
return Const::error(ctx.interner());
}
- if let Expr::Path(p) = &ctx.body[expr] {
+ if let Expr::Path(p) = &ctx.store[expr] {
let mut ctx = TyLoweringContext::new(
ctx.db,
&ctx.resolver,
- ctx.body,
+ ctx.store,
ctx.generic_def,
LifetimeElisionKind::Infer,
);
@@ -336,7 +336,8 @@ pub(crate) fn eval_to_const<'db>(expr: ExprId, ctx: &mut InferenceContext<'_, 'd
}
}
if let Some(body_owner) = ctx.owner.as_def_with_body()
- && let Ok(mir_body) = lower_body_to_mir(ctx.db, body_owner, ctx.body, &infer, expr)
+ && let Ok(mir_body) =
+ lower_body_to_mir(ctx.db, body_owner, &ctx.db.body(body_owner), &infer, expr)
&& let Ok((Ok(result), _)) = interpret_mir(ctx.db, Arc::new(mir_body), true, None)
{
return result;