impl stable for kinds · rust-lang/rust@a49138e
@@ -230,72 +230,64 @@ pub(crate) trait Stable<'tcx> {
230230impl<'tcx> Stable<'tcx> for mir::Statement<'tcx> {
231231type T = stable_mir::mir::Statement;
232232fn stable(&self, tables: &mut Tables<'tcx>) -> Self::T {
233-use rustc_middle::mir::StatementKind::*;
234-let span = self.source_info.span.stable(tables);
235-match &self.kind {
236-Assign(assign) => Statement {
237-kind: stable_mir::mir::StatementKind::Assign(
238- assign.0.stable(tables),
239- assign.1.stable(tables),
240-),
241- span,
242-},
243-FakeRead(fake_read_place) => Statement {
244-kind: stable_mir::mir::StatementKind::FakeRead(
233+Statement { kind: self.kind.stable(tables), span: self.source_info.span.stable(tables) }
234+}
235+}
236+237+impl<'tcx> Stable<'tcx> for mir::StatementKind<'tcx> {
238+type T = stable_mir::mir::StatementKind;
239+fn stable(&self, tables: &mut Tables<'tcx>) -> Self::T {
240+match self {
241+ mir::StatementKind::Assign(assign) => stable_mir::mir::StatementKind::Assign(
242+ assign.0.stable(tables),
243+ assign.1.stable(tables),
244+),
245+ mir::StatementKind::FakeRead(fake_read_place) => {
246+ stable_mir::mir::StatementKind::FakeRead(
245247 fake_read_place.0.stable(tables),
246248 fake_read_place.1.stable(tables),
247-),
248- span,
249-},
250-SetDiscriminant { place: plc, variant_index: idx } => Statement {
251-kind: stable_mir::mir::StatementKind::SetDiscriminant {
252-place: plc.as_ref().stable(tables),
253-variant_index: idx.stable(tables),
254-},
255- span,
256-},
257-Deinit(place) => Statement {
258-kind: stable_mir::mir::StatementKind::Deinit(place.stable(tables)),
259- span,
260-},
261-StorageLive(place) => Statement {
262-kind: stable_mir::mir::StatementKind::StorageLive(place.stable(tables)),
263- span,
264-},
265-StorageDead(place) => Statement {
266-kind: stable_mir::mir::StatementKind::StorageDead(place.stable(tables)),
267- span,
268-},
269-Retag(retag, place) => Statement {
270-kind: stable_mir::mir::StatementKind::Retag(
271- retag.stable(tables),
272- place.stable(tables),
273-),
274- span,
275-},
276-PlaceMention(place) => Statement {
277-kind: stable_mir::mir::StatementKind::PlaceMention(place.stable(tables)),
278- span,
279-},
280-AscribeUserType(place_projection, variance) => Statement {
281-kind: stable_mir::mir::StatementKind::AscribeUserType {
249+)
250+}
251+ mir::StatementKind::SetDiscriminant { place, variant_index } => {
252+ stable_mir::mir::StatementKind::SetDiscriminant {
253+place: place.as_ref().stable(tables),
254+variant_index: variant_index.stable(tables),
255+}
256+}
257+ mir::StatementKind::Deinit(place) => {
258+ stable_mir::mir::StatementKind::Deinit(place.stable(tables))
259+}
260+261+ mir::StatementKind::StorageLive(place) => {
262+ stable_mir::mir::StatementKind::StorageLive(place.stable(tables))
263+}
264+265+ mir::StatementKind::StorageDead(place) => {
266+ stable_mir::mir::StatementKind::StorageDead(place.stable(tables))
267+}
268+ mir::StatementKind::Retag(retag, place) => {
269+ stable_mir::mir::StatementKind::Retag(retag.stable(tables), place.stable(tables))
270+}
271+ mir::StatementKind::PlaceMention(place) => {
272+ stable_mir::mir::StatementKind::PlaceMention(place.stable(tables))
273+}
274+ mir::StatementKind::AscribeUserType(place_projection, variance) => {
275+ stable_mir::mir::StatementKind::AscribeUserType {
282276place: place_projection.as_ref().0.stable(tables),
283277projections: place_projection.as_ref().1.stable(tables),
284278variance: variance.stable(tables),
285-},
286- span,
287-},
288-Coverage(coverage) => {
289-Statement { kind: stable_mir::mir::StatementKind::Coverage(opaque(coverage)), span }
279+}
290280}
291-Intrinsic(intrinstic) => Statement {
292-kind: stable_mir::mir::StatementKind::Intrinsic(intrinstic.stable(tables)),
293- span,
294-},
295-ConstEvalCounter => {
296-Statement { kind: stable_mir::mir::StatementKind::ConstEvalCounter, span }
281+ mir::StatementKind::Coverage(coverage) => {
282+ stable_mir::mir::StatementKind::Coverage(opaque(coverage))
283+}
284+ mir::StatementKind::Intrinsic(intrinstic) => {
285+ stable_mir::mir::StatementKind::Intrinsic(intrinstic.stable(tables))
286+}
287+ mir::StatementKind::ConstEvalCounter => {
288+ stable_mir::mir::StatementKind::ConstEvalCounter
297289}
298-Nop => Statement { kind: stable_mir::mir::StatementKind::Nop, span },
290+mir::StatementKind::Nop => stable_mir::mir::StatementKind::Nop,
299291}
300292}
301293}
@@ -844,76 +836,84 @@ impl<'tcx> Stable<'tcx> for mir::InlineAsmOperand<'tcx> {
844836impl<'tcx> Stable<'tcx> for mir::Terminator<'tcx> {
845837type T = stable_mir::mir::Terminator;
846838fn stable(&self, tables: &mut Tables<'tcx>) -> Self::T {
847-use rustc_middle::mir::TerminatorKind::*;
848839use stable_mir::mir::Terminator;
840+Terminator { kind: self.kind.stable(tables), span: self.source_info.span.stable(tables) }
841+}
842+}
843+844+impl<'tcx> Stable<'tcx> for mir::TerminatorKind<'tcx> {
845+type T = stable_mir::mir::TerminatorKind;
846+fn stable(&self, tables: &mut Tables<'tcx>) -> Self::T {
849847use stable_mir::mir::TerminatorKind;
850-let span = self.source_info.span.stable(tables);
851-match &self.kind {
852-Goto { target } => {
853-Terminator { kind: TerminatorKind::Goto { target: target.as_usize() }, span }
854-}
855-SwitchInt { discr, targets } => Terminator {
856-kind: TerminatorKind::SwitchInt {
857-discr: discr.stable(tables),
858-targets: targets
859-.iter()
860-.map(|(value, target)| stable_mir::mir::SwitchTarget {
861- value,
862-target: target.as_usize(),
863-})
864-.collect(),
865-otherwise: targets.otherwise().as_usize(),
866-},
867- span,
848+match self {
849+ mir::TerminatorKind::Goto { target } => {
850+TerminatorKind::Goto { target: target.as_usize() }
851+}
852+ mir::TerminatorKind::SwitchInt { discr, targets } => TerminatorKind::SwitchInt {
853+discr: discr.stable(tables),
854+targets: targets
855+.iter()
856+.map(|(value, target)| stable_mir::mir::SwitchTarget {
857+ value,
858+target: target.as_usize(),
859+})
860+.collect(),
861+otherwise: targets.otherwise().as_usize(),
868862},
869-UnwindResume => Terminator { kind: TerminatorKind::Resume, span },
870-UnwindTerminate(_) => Terminator { kind: TerminatorKind::Abort, span },
871-Return => Terminator { kind: TerminatorKind::Return, span },
872-Unreachable => Terminator { kind: TerminatorKind::Unreachable, span },
873-Drop { place, target, unwind, replace: _ } => Terminator {
874-kind: TerminatorKind::Drop {
863+mir::TerminatorKind::UnwindResume => TerminatorKind::Resume,
864+mir::TerminatorKind::UnwindTerminate(_) => TerminatorKind::Abort,
865+mir::TerminatorKind::Return => TerminatorKind::Return,
866+mir::TerminatorKind::Unreachable => TerminatorKind::Unreachable,
867+mir::TerminatorKind::Drop { place, target, unwind, replace: _ } => {
868+TerminatorKind::Drop {
875869place: place.stable(tables),
876870target: target.as_usize(),
877871unwind: unwind.stable(tables),
878-},
879- span,
880-},
881-Call { func, args, destination, target, unwind, call_source: _, fn_span: _ } => {
882-Terminator {
883-kind: TerminatorKind::Call {
884-func: func.stable(tables),
885-args: args.iter().map(|arg| arg.stable(tables)).collect(),
886-destination: destination.stable(tables),
887-target: target.map(|t| t.as_usize()),
888-unwind: unwind.stable(tables),
889-},
890- span,
891872}
892873}
893-Assert { cond, expected, msg, target, unwind } => Terminator {
894-kind: TerminatorKind::Assert {
874+ mir::TerminatorKind::Call {
875+ func,
876+ args,
877+ destination,
878+ target,
879+ unwind,
880+call_source: _,
881+fn_span: _,
882+} => TerminatorKind::Call {
883+func: func.stable(tables),
884+args: args.iter().map(|arg| arg.stable(tables)).collect(),
885+destination: destination.stable(tables),
886+target: target.map(|t| t.as_usize()),
887+unwind: unwind.stable(tables),
888+},
889+ mir::TerminatorKind::Assert { cond, expected, msg, target, unwind } => {
890+TerminatorKind::Assert {
895891cond: cond.stable(tables),
896892expected: *expected,
897893msg: msg.stable(tables),
898894target: target.as_usize(),
899895unwind: unwind.stable(tables),
900-},
901- span,
902-},
903-InlineAsm { template, operands, options, line_spans, destination, unwind } => {
904-Terminator {
905-kind: TerminatorKind::InlineAsm {
906-template: format!("{template:?}"),
907-operands: operands.iter().map(|operand| operand.stable(tables)).collect(),
908-options: format!("{options:?}"),
909-line_spans: format!("{line_spans:?}"),
910-destination: destination.map(|d| d.as_usize()),
911-unwind: unwind.stable(tables),
912-},
913- span,
914896}
915897}
916-Yield { .. } | GeneratorDrop | FalseEdge { .. } | FalseUnwind { .. } => unreachable!(),
898+ mir::TerminatorKind::InlineAsm {
899+ template,
900+ operands,
901+ options,
902+ line_spans,
903+ destination,
904+ unwind,
905+} => TerminatorKind::InlineAsm {
906+template: format!("{template:?}"),
907+operands: operands.iter().map(|operand| operand.stable(tables)).collect(),
908+options: format!("{options:?}"),
909+line_spans: format!("{line_spans:?}"),
910+destination: destination.map(|d| d.as_usize()),
911+unwind: unwind.stable(tables),
912+},
913+ mir::TerminatorKind::Yield { .. }
914+ | mir::TerminatorKind::GeneratorDrop
915+ | mir::TerminatorKind::FalseEdge { .. }
916+ | mir::TerminatorKind::FalseUnwind { .. } => unreachable!(),
917917}
918918}
919919}