summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_const_eval/src/transform/check_consts/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_const_eval/src/transform/check_consts/mod.rs')
-rw-r--r--compiler/rustc_const_eval/src/transform/check_consts/mod.rs19
1 files changed, 6 insertions, 13 deletions
diff --git a/compiler/rustc_const_eval/src/transform/check_consts/mod.rs b/compiler/rustc_const_eval/src/transform/check_consts/mod.rs
index 8ebfee887..e51082e1e 100644
--- a/compiler/rustc_const_eval/src/transform/check_consts/mod.rs
+++ b/compiler/rustc_const_eval/src/transform/check_consts/mod.rs
@@ -68,11 +68,11 @@ impl<'mir, 'tcx> ConstCx<'mir, 'tcx> {
pub fn fn_sig(&self) -> PolyFnSig<'tcx> {
let did = self.def_id().to_def_id();
if self.tcx.is_closure(did) {
- let ty = self.tcx.type_of(did).subst_identity();
- let ty::Closure(_, substs) = ty.kind() else { bug!("type_of closure not ty::Closure") };
- substs.as_closure().sig()
+ let ty = self.tcx.type_of(did).instantiate_identity();
+ let ty::Closure(_, args) = ty.kind() else { bug!("type_of closure not ty::Closure") };
+ args.as_closure().sig()
} else {
- self.tcx.fn_sig(did).subst_identity()
+ self.tcx.fn_sig(did).instantiate_identity()
}
}
}
@@ -127,15 +127,8 @@ fn is_parent_const_stable_trait(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
let hir_id = tcx.local_def_id_to_hir_id(local_def_id);
let Some(parent) = tcx.hir().opt_parent_id(hir_id) else { return false };
- let parent_def = tcx.hir().get(parent);
-
- if !matches!(
- parent_def,
- hir::Node::Item(hir::Item {
- kind: hir::ItemKind::Impl(hir::Impl { constness: hir::Constness::Const, .. }),
- ..
- })
- ) {
+
+ if !tcx.is_const_trait_impl_raw(parent.owner.def_id.to_def_id()) {
return false;
}