Skip to content

Commit e84e929

Browse files
committed
Use evaluate_const
1 parent f1782ca commit e84e929

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

src/preempt_count/adjustment.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ use rustc_errors::{Diag, EmissionGuarantee, ErrorGuaranteed, MultiSpan};
66
use rustc_hir::def_id::{CrateNum, DefId};
77
use rustc_hir::LangItem;
88
use rustc_middle::mir::{Body, TerminatorKind, UnwindAction};
9-
use rustc_middle::ty::{self, GenericArgs, Instance, ParamEnv, ParamEnvAnd, Ty};
9+
use rustc_middle::ty::{self, GenericArgs, Instance, ParamEnv, ParamEnvAnd, Ty, TypingMode};
1010
use rustc_mir_dataflow::Analysis;
1111
use rustc_mir_dataflow::JoinSemiLattice;
12+
use rustc_trait_selection::infer::TyCtxtInferExt;
1213

1314
use super::dataflow::{AdjustmentBoundsOrError, AdjustmentComputation};
1415
use super::{Error, PolyDisplay, UseSiteKind};
@@ -423,8 +424,8 @@ memoize!(
423424
}
424425

425426
ty::Array(elem_ty, size) => {
426-
let size = size
427-
.normalize_internal(cx.tcx, param_env)
427+
let infcx = cx.tcx.infer_ctxt().build(TypingMode::PostAnalysis);
428+
let size = rustc_trait_selection::traits::evaluate_const(&infcx, *size, param_env)
428429
.try_to_target_usize(cx.tcx)
429430
.ok_or(Error::TooGeneric);
430431
if size == Ok(0) {

src/preempt_count/expectation.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ use rustc_errors::{EmissionGuarantee, MultiSpan};
66
use rustc_hir::def_id::CrateNum;
77
use rustc_hir::LangItem;
88
use rustc_middle::mir::{self, Body, TerminatorKind};
9-
use rustc_middle::ty::{self, GenericArgs, Instance, ParamEnv, ParamEnvAnd, Ty};
9+
use rustc_middle::ty::{self, GenericArgs, Instance, ParamEnv, ParamEnvAnd, Ty, TypingMode};
1010
use rustc_mir_dataflow::lattice::MeetSemiLattice;
1111
use rustc_mir_dataflow::Analysis;
1212
use rustc_span::DUMMY_SP;
13+
use rustc_trait_selection::infer::TyCtxtInferExt;
1314

1415
use super::dataflow::AdjustmentComputation;
1516
use super::{AdjustmentBounds, Error, ExpectationRange, PolyDisplay, UseSite, UseSiteKind};
@@ -423,8 +424,8 @@ impl<'tcx> AnalysisCtxt<'tcx> {
423424
}
424425

425426
let elem_adj = self.drop_adjustment(param_and_elem_ty)?;
426-
let size = size
427-
.normalize_internal(self.tcx, param_env)
427+
let infcx = self.tcx.infer_ctxt().build(TypingMode::PostAnalysis);
428+
let size = rustc_trait_selection::traits::evaluate_const(&infcx, *size, param_env)
428429
.try_to_target_usize(self.tcx)
429430
.ok_or(Error::TooGeneric)?;
430431
let Ok(size) = i32::try_from(size) else {
@@ -741,8 +742,8 @@ memoize!(
741742
}
742743

743744
ty::Array(elem_ty, size) => {
744-
let size = size
745-
.normalize_internal(cx.tcx, param_env)
745+
let infcx = cx.tcx.infer_ctxt().build(TypingMode::PostAnalysis);
746+
let size = rustc_trait_selection::traits::evaluate_const(&infcx, *size, param_env)
746747
.try_to_target_usize(cx.tcx)
747748
.ok_or(Error::TooGeneric);
748749
if size == Ok(0) {

0 commit comments

Comments
 (0)