Review comment

This commit is contained in:
Michael Goulet 2023-11-17 23:49:07 +00:00
parent 82f23d56b7
commit 8bf9c18914
2 changed files with 19 additions and 20 deletions

View File

@ -219,6 +219,17 @@ pub enum Const<'tcx> {
}
impl<'tcx> Const<'tcx> {
pub fn identity_unevaluated(tcx: TyCtxt<'tcx>, def_id: DefId) -> ty::EarlyBinder<Const<'tcx>> {
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 {

View File

@ -642,34 +642,22 @@ impl<'tcx> Cx<'tcx> {
}
}
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);