Skip to content

Commit 7d13f8d

Browse files
committed
Implement Stable for Discr
1 parent a2d5942 commit 7d13f8d

File tree

2 files changed

+15
-14
lines changed

2 files changed

+15
-14
lines changed

compiler/rustc_smir/src/rustc_smir/context.rs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -445,12 +445,9 @@ impl<'tcx> SmirCtxt<'tcx> {
445445
pub fn adt_discr_for_variant(&self, adt: AdtDef, variant: VariantIdx) -> Discr {
446446
let mut tables = self.0.borrow_mut();
447447
let tcx = tables.tcx;
448-
449-
let discr = adt
450-
.internal(&mut *tables, tcx)
451-
.discriminant_for_variant(tcx, variant.internal(&mut *tables, tcx));
452-
453-
Discr { val: discr.val, ty: discr.ty.stable(&mut *tables) }
448+
let adt = adt.internal(&mut *tables, tcx);
449+
let variant = variant.internal(&mut *tables, tcx);
450+
adt.discriminant_for_variant(tcx, variant).stable(&mut *tables)
454451
}
455452

456453
/// Discriminant for a given variand index and args of a coroutine
@@ -462,14 +459,10 @@ impl<'tcx> SmirCtxt<'tcx> {
462459
) -> Discr {
463460
let mut tables = self.0.borrow_mut();
464461
let tcx = tables.tcx;
465-
466-
let discr = args.internal(&mut *tables, tcx).as_coroutine().discriminant_for_variant(
467-
coroutine.def_id().internal(&mut *tables, tcx),
468-
tcx,
469-
variant.internal(&mut *tables, tcx),
470-
);
471-
472-
Discr { val: discr.val, ty: discr.ty.stable(&mut *tables) }
462+
let coroutine = coroutine.def_id().internal(&mut *tables, tcx);
463+
let args = args.internal(&mut *tables, tcx);
464+
let variant = variant.internal(&mut *tables, tcx);
465+
args.as_coroutine().discriminant_for_variant(coroutine, tcx, variant).stable(&mut *tables)
473466
}
474467

475468
/// The name of a variant.

compiler/rustc_smir/src/rustc_smir/convert/ty.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -959,3 +959,11 @@ impl<'tcx> Stable<'tcx> for ty::ImplTraitInTraitData {
959959
}
960960
}
961961
}
962+
963+
impl<'tcx> Stable<'tcx> for rustc_middle::ty::util::Discr<'tcx> {
964+
type T = stable_mir::ty::Discr;
965+
966+
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
967+
stable_mir::ty::Discr { val: self.val, ty: self.ty.stable(tables) }
968+
}
969+
}

0 commit comments

Comments
 (0)