Skip to content

Commit d149086

Browse files
committed
Implement Stable for Discr
1 parent cc9eccb commit d149086

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
@@ -452,12 +452,9 @@ impl<'tcx> SmirCtxt<'tcx> {
452452
pub fn adt_discr_for_variant(&self, adt: AdtDef, variant: VariantIdx) -> Discr {
453453
let mut tables = self.0.borrow_mut();
454454
let tcx = tables.tcx;
455-
456-
let discr = adt
457-
.internal(&mut *tables, tcx)
458-
.discriminant_for_variant(tcx, variant.internal(&mut *tables, tcx));
459-
460-
Discr { val: discr.val, ty: discr.ty.stable(&mut *tables) }
455+
let adt = adt.internal(&mut *tables, tcx);
456+
let variant = variant.internal(&mut *tables, tcx);
457+
adt.discriminant_for_variant(tcx, variant).stable(&mut *tables)
461458
}
462459

463460
/// Discriminant for a given variand index and args of a coroutine
@@ -469,14 +466,10 @@ impl<'tcx> SmirCtxt<'tcx> {
469466
) -> Discr {
470467
let mut tables = self.0.borrow_mut();
471468
let tcx = tables.tcx;
472-
473-
let discr = args.internal(&mut *tables, tcx).as_coroutine().discriminant_for_variant(
474-
coroutine.def_id().internal(&mut *tables, tcx),
475-
tcx,
476-
variant.internal(&mut *tables, tcx),
477-
);
478-
479-
Discr { val: discr.val, ty: discr.ty.stable(&mut *tables) }
469+
let coroutine = coroutine.def_id().internal(&mut *tables, tcx);
470+
let args = args.internal(&mut *tables, tcx);
471+
let variant = variant.internal(&mut *tables, tcx);
472+
args.as_coroutine().discriminant_for_variant(coroutine, tcx, variant).stable(&mut *tables)
480473
}
481474

482475
/// 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
@@ -960,3 +960,11 @@ impl<'tcx> Stable<'tcx> for ty::ImplTraitInTraitData {
960960
}
961961
}
962962
}
963+
964+
impl<'tcx> Stable<'tcx> for rustc_middle::ty::util::Discr<'tcx> {
965+
type T = stable_mir::ty::Discr;
966+
967+
fn stable(&self, tables: &mut Tables<'_>) -> Self::T {
968+
stable_mir::ty::Discr { val: self.val, ty: self.ty.stable(tables) }
969+
}
970+
}

0 commit comments

Comments
 (0)