Skip to content

Commit e2992c7

Browse files
committed
refactor: avoid calling internal functions in predicates_of() and explicit_predicates_of()
1 parent 09829e1 commit e2992c7

File tree

2 files changed

+33
-24
lines changed

2 files changed

+33
-24
lines changed

compiler/rustc_smir/src/rustc_smir/context/impls.rs

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ use rustc_middle::mir::{BinOp, Body, Const as MirConst, ConstValue, UnOp};
1515
use rustc_middle::ty::layout::{FnAbiOf, LayoutOf};
1616
use rustc_middle::ty::print::{with_forced_trimmed_paths, with_no_trimmed_paths};
1717
use rustc_middle::ty::{
18-
AdtDef, AdtKind, AssocItem, ClosureKind, GenericArgsRef, GenericPredicates, Instance,
19-
InstanceKind, IntrinsicDef, List, PolyFnSig, ScalarInt, TraitDef, Ty, TyCtxt, TyKind,
20-
TypeVisitableExt, UintTy, ValTree, VariantDef,
18+
AdtDef, AdtKind, AssocItem, ClosureKind, GenericArgsRef, Instance, InstanceKind, IntrinsicDef,
19+
List, PolyFnSig, ScalarInt, TraitDef, Ty, TyCtxt, TyKind, TypeVisitableExt, UintTy, ValTree,
20+
VariantDef,
2121
};
2222
use rustc_middle::{mir, ty};
2323
use rustc_session::cstore::ForeignModule;
@@ -197,12 +197,32 @@ impl<'tcx, B: Bridge> SmirCtxt<'tcx, B> {
197197
self.tcx.generics_of(def_id)
198198
}
199199

200-
pub fn predicates_of(&self, def_id: DefId) -> GenericPredicates<'tcx> {
201-
self.tcx.predicates_of(def_id)
200+
pub fn predicates_of(
201+
&self,
202+
def_id: DefId,
203+
) -> (Option<DefId>, Vec<(ty::PredicateKind<'tcx>, Span)>) {
204+
let ty::GenericPredicates { parent, predicates } = self.tcx.predicates_of(def_id);
205+
(
206+
parent,
207+
predicates
208+
.iter()
209+
.map(|(clause, span)| (clause.as_predicate().kind().skip_binder(), *span))
210+
.collect(),
211+
)
202212
}
203213

204-
pub fn explicit_predicates_of(&self, def_id: DefId) -> GenericPredicates<'tcx> {
205-
self.tcx.explicit_predicates_of(def_id)
214+
pub fn explicit_predicates_of(
215+
&self,
216+
def_id: DefId,
217+
) -> (Option<DefId>, Vec<(ty::PredicateKind<'tcx>, Span)>) {
218+
let ty::GenericPredicates { parent, predicates } = self.tcx.explicit_predicates_of(def_id);
219+
(
220+
parent,
221+
predicates
222+
.iter()
223+
.map(|(clause, span)| (clause.as_predicate().kind().skip_binder(), *span))
224+
.collect(),
225+
)
206226
}
207227

208228
pub fn crate_name(&self, crate_num: CrateNum) -> String {

compiler/rustc_smir/src/stable_mir/compiler_interface.rs

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -423,17 +423,12 @@ impl<'tcx> SmirInterface for SmirContainer<'tcx, BridgeTys> {
423423
let mut tables = self.tables.borrow_mut();
424424
let cx = &*self.cx.borrow();
425425
let did = tables[def_id];
426-
let rustc_middle::ty::GenericPredicates { parent, predicates } = cx.predicates_of(did);
426+
let (parent, kinds) = cx.predicates_of(did);
427427
stable_mir::ty::GenericPredicates {
428428
parent: parent.map(|did| tables.trait_def(did)),
429-
predicates: predicates
429+
predicates: kinds
430430
.iter()
431-
.map(|(clause, span)| {
432-
(
433-
clause.as_predicate().kind().skip_binder().stable(&mut *tables, cx),
434-
span.stable(&mut *tables, cx),
435-
)
436-
})
431+
.map(|(kind, span)| (kind.stable(&mut *tables, cx), span.stable(&mut *tables, cx)))
437432
.collect(),
438433
}
439434
}
@@ -442,18 +437,12 @@ impl<'tcx> SmirInterface for SmirContainer<'tcx, BridgeTys> {
442437
let mut tables = self.tables.borrow_mut();
443438
let cx = &*self.cx.borrow();
444439
let did = tables[def_id];
445-
let rustc_middle::ty::GenericPredicates { parent, predicates } =
446-
cx.explicit_predicates_of(did);
440+
let (parent, kinds) = cx.explicit_predicates_of(did);
447441
stable_mir::ty::GenericPredicates {
448442
parent: parent.map(|did| tables.trait_def(did)),
449-
predicates: predicates
443+
predicates: kinds
450444
.iter()
451-
.map(|(clause, span)| {
452-
(
453-
clause.as_predicate().kind().skip_binder().stable(&mut *tables, cx),
454-
span.stable(&mut *tables, cx),
455-
)
456-
})
445+
.map(|(kind, span)| (kind.stable(&mut *tables, cx), span.stable(&mut *tables, cx)))
457446
.collect(),
458447
}
459448
}

0 commit comments

Comments
 (0)