@@ -119,8 +119,11 @@ fn smir_crate(tcx: TyCtxt<'_>, crate_num: CrateNum) -> stable_mir::Crate {
119119 stable_mir:: Crate { id : crate_num. into ( ) , name : crate_name, is_local }
120120}
121121
122- pub trait Stable {
122+ /// Trait used to convert between an internal MIR type to a Stable MIR type.
123+ pub ( crate ) trait Stable {
124+ /// The stable representation of the type implementing Stable.
123125 type T ;
126+ /// Converts an object to the equivalent Stable MIR representation.
124127 fn stable ( & self ) -> Self :: T ;
125128}
126129
@@ -211,34 +214,38 @@ impl Stable for mir::UnwindAction {
211214 }
212215}
213216
214- fn rustc_assert_msg_to_msg < ' tcx > (
215- assert_message : & rustc_middle:: mir:: AssertMessage < ' tcx > ,
216- ) -> stable_mir:: mir:: AssertMessage {
217- use rustc_middle:: mir:: AssertKind ;
218- match assert_message {
219- AssertKind :: BoundsCheck { len, index } => {
220- stable_mir:: mir:: AssertMessage :: BoundsCheck { len : len. stable ( ) , index : index. stable ( ) }
221- }
222- AssertKind :: Overflow ( bin_op, op1, op2) => {
223- stable_mir:: mir:: AssertMessage :: Overflow ( bin_op. stable ( ) , op1. stable ( ) , op2. stable ( ) )
224- }
225- AssertKind :: OverflowNeg ( op) => stable_mir:: mir:: AssertMessage :: OverflowNeg ( op. stable ( ) ) ,
226- AssertKind :: DivisionByZero ( op) => {
227- stable_mir:: mir:: AssertMessage :: DivisionByZero ( op. stable ( ) )
228- }
229- AssertKind :: RemainderByZero ( op) => {
230- stable_mir:: mir:: AssertMessage :: RemainderByZero ( op. stable ( ) )
231- }
232- AssertKind :: ResumedAfterReturn ( generator) => {
233- stable_mir:: mir:: AssertMessage :: ResumedAfterReturn ( generator. stable ( ) )
234- }
235- AssertKind :: ResumedAfterPanic ( generator) => {
236- stable_mir:: mir:: AssertMessage :: ResumedAfterPanic ( generator. stable ( ) )
237- }
238- AssertKind :: MisalignedPointerDereference { required, found } => {
239- stable_mir:: mir:: AssertMessage :: MisalignedPointerDereference {
240- required : required. stable ( ) ,
241- found : found. stable ( ) ,
217+ impl < ' tcx > Stable for mir:: AssertMessage < ' tcx > {
218+ type T = stable_mir:: mir:: AssertMessage ;
219+ fn stable ( & self ) -> Self :: T {
220+ use rustc_middle:: mir:: AssertKind ;
221+ match self {
222+ AssertKind :: BoundsCheck { len, index } => stable_mir:: mir:: AssertMessage :: BoundsCheck {
223+ len : len. stable ( ) ,
224+ index : index. stable ( ) ,
225+ } ,
226+ AssertKind :: Overflow ( bin_op, op1, op2) => stable_mir:: mir:: AssertMessage :: Overflow (
227+ bin_op. stable ( ) ,
228+ op1. stable ( ) ,
229+ op2. stable ( ) ,
230+ ) ,
231+ AssertKind :: OverflowNeg ( op) => stable_mir:: mir:: AssertMessage :: OverflowNeg ( op. stable ( ) ) ,
232+ AssertKind :: DivisionByZero ( op) => {
233+ stable_mir:: mir:: AssertMessage :: DivisionByZero ( op. stable ( ) )
234+ }
235+ AssertKind :: RemainderByZero ( op) => {
236+ stable_mir:: mir:: AssertMessage :: RemainderByZero ( op. stable ( ) )
237+ }
238+ AssertKind :: ResumedAfterReturn ( generator) => {
239+ stable_mir:: mir:: AssertMessage :: ResumedAfterReturn ( generator. stable ( ) )
240+ }
241+ AssertKind :: ResumedAfterPanic ( generator) => {
242+ stable_mir:: mir:: AssertMessage :: ResumedAfterPanic ( generator. stable ( ) )
243+ }
244+ AssertKind :: MisalignedPointerDereference { required, found } => {
245+ stable_mir:: mir:: AssertMessage :: MisalignedPointerDereference {
246+ required : required. stable ( ) ,
247+ found : found. stable ( ) ,
248+ }
242249 }
243250 }
244251 }
@@ -358,7 +365,7 @@ impl<'tcx> Stable for mir::Terminator<'tcx> {
358365 Assert { cond, expected, msg, target, unwind } => Terminator :: Assert {
359366 cond : cond. stable ( ) ,
360367 expected : * expected,
361- msg : rustc_assert_msg_to_msg ( msg) ,
368+ msg : msg. stable ( ) ,
362369 target : target. as_usize ( ) ,
363370 unwind : unwind. stable ( ) ,
364371 } ,
0 commit comments