diff --git a/compiler/rustc_middle/src/mir/consts.rs b/compiler/rustc_middle/src/mir/consts.rs index 63c01f938821c..2e366995aacb8 100644 --- a/compiler/rustc_middle/src/mir/consts.rs +++ b/compiler/rustc_middle/src/mir/consts.rs @@ -219,6 +219,17 @@ pub enum Const<'tcx> { } impl<'tcx> Const<'tcx> { + pub fn identity_unevaluated(tcx: TyCtxt<'tcx>, def_id: DefId) -> ty::EarlyBinder> { + ty::EarlyBinder::bind(Const::Unevaluated( + UnevaluatedConst { + def: def_id, + args: ty::GenericArgs::identity_for_item(tcx, def_id), + promoted: None, + }, + tcx.type_of(def_id).skip_binder(), + )) + } + #[inline(always)] pub fn ty(&self) -> Ty<'tcx> { match self { diff --git a/compiler/rustc_mir_build/src/thir/cx/expr.rs b/compiler/rustc_mir_build/src/thir/cx/expr.rs index ea1965574ab4f..1e45cd975ecb9 100644 --- a/compiler/rustc_mir_build/src/thir/cx/expr.rs +++ b/compiler/rustc_mir_build/src/thir/cx/expr.rs @@ -645,34 +645,22 @@ impl<'tcx> Cx<'tcx> { out_expr: out_expr.map(|expr| self.mirror_expr(expr)), }, hir::InlineAsmOperand::Const { ref anon_const } => { - let value = mir::Const::Unevaluated( - mir::UnevaluatedConst { - def: anon_const.def_id.to_def_id(), - args: GenericArgs::identity_for_item( - self.tcx, - anon_const.def_id, - ), - promoted: None, - }, - tcx.type_of(anon_const.def_id).instantiate_identity(), + let value = mir::Const::identity_unevaluated( + tcx, + anon_const.def_id.to_def_id(), ) + .instantiate_identity() .normalize(tcx, self.param_env); let span = tcx.def_span(anon_const.def_id); InlineAsmOperand::Const { value, span } } hir::InlineAsmOperand::SymFn { ref anon_const } => { - let value = mir::Const::Unevaluated( - mir::UnevaluatedConst { - def: anon_const.def_id.to_def_id(), - args: GenericArgs::identity_for_item( - self.tcx, - anon_const.def_id, - ), - promoted: None, - }, - tcx.type_of(anon_const.def_id).instantiate_identity(), + let value = mir::Const::identity_unevaluated( + tcx, + anon_const.def_id.to_def_id(), ) + .instantiate_identity() .normalize(tcx, self.param_env); let span = tcx.def_span(anon_const.def_id);