Skip to content

Commit c2b61fb

Browse files
committed
move code to InferCtxt method
1 parent ab61e72 commit c2b61fb

File tree

3 files changed

+18
-16
lines changed

3 files changed

+18
-16
lines changed

compiler/rustc_infer/src/infer/mod.rs

+16
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,22 @@ pub struct CombinedSnapshot<'a, 'tcx> {
670670
}
671671

672672
impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
673+
/// calls `tcx.try_unify_abstract_consts` after
674+
/// canonicalizing the consts.
675+
pub fn try_unify_abstract_consts(
676+
&self,
677+
a: ty::Unevaluated<'tcx>,
678+
b: ty::Unevaluated<'tcx>,
679+
) -> bool {
680+
let canonical = self.canonicalize_query(
681+
((a.def, a.substs), (b.def, b.substs)),
682+
&mut OriginalQueryValues::default(),
683+
);
684+
debug!("canonical consts: {:?}", &canonical.value);
685+
686+
self.tcx.try_unify_abstract_consts(canonical.value)
687+
}
688+
673689
pub fn is_in_snapshot(&self) -> bool {
674690
self.in_snapshot.get()
675691
}

compiler/rustc_trait_selection/src/traits/fulfill.rs

+1-8
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use rustc_data_structures::obligation_forest::{Error, ForestObligation, Outcome}
44
use rustc_data_structures::obligation_forest::{ObligationForest, ObligationProcessor};
55
use rustc_errors::ErrorReported;
66
use rustc_hir as hir;
7-
use rustc_infer::infer::canonical::OriginalQueryValues;
87
use rustc_infer::traits::{SelectionError, TraitEngine, TraitEngineExt as _, TraitObligation};
98
use rustc_middle::mir::abstract_const::NotConstEvaluatable;
109
use rustc_middle::mir::interpret::ErrorHandled;
@@ -553,13 +552,7 @@ impl<'a, 'b, 'tcx> FulfillProcessor<'a, 'b, 'tcx> {
553552
if let (ty::ConstKind::Unevaluated(a), ty::ConstKind::Unevaluated(b)) =
554553
(c1.val, c2.val)
555554
{
556-
let canonical = infcx.canonicalize_query(
557-
((a.def, a.substs), (b.def, b.substs)),
558-
&mut OriginalQueryValues::default(),
559-
);
560-
debug!("canonical consts: {:?}", &canonical.value);
561-
562-
if self.selcx.tcx().try_unify_abstract_consts(canonical.value) {
555+
if infcx.try_unify_abstract_consts(a, b) {
563556
return ProcessResult::Changed(vec![]);
564557
}
565558
}

compiler/rustc_trait_selection/src/traits/select/mod.rs

+1-8
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ use rustc_errors::ErrorReported;
3333
use rustc_hir as hir;
3434
use rustc_hir::def_id::DefId;
3535
use rustc_hir::Constness;
36-
use rustc_infer::infer::canonical::OriginalQueryValues;
3736
use rustc_infer::infer::LateBoundRegionConversionTime;
3837
use rustc_middle::dep_graph::{DepKind, DepNodeIndex};
3938
use rustc_middle::mir::abstract_const::NotConstEvaluatable;
@@ -609,13 +608,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
609608
if let (ty::ConstKind::Unevaluated(a), ty::ConstKind::Unevaluated(b)) =
610609
(c1.val, c2.val)
611610
{
612-
let canonical = self.infcx.canonicalize_query(
613-
((a.def, a.substs), (b.def, b.substs)),
614-
&mut OriginalQueryValues::default(),
615-
);
616-
debug!("canonical consts: {:?}", &canonical.value);
617-
618-
if self.tcx().try_unify_abstract_consts(canonical.value) {
611+
if self.infcx.try_unify_abstract_consts(a, b) {
619612
return Ok(EvaluatedToOk);
620613
}
621614
}

0 commit comments

Comments
 (0)