@@ -119,8 +119,11 @@ fn smir_crate(tcx: TyCtxt<'_>, crate_num: CrateNum) -> stable_mir::Crate {
119
119
stable_mir:: Crate { id : crate_num. into ( ) , name : crate_name, is_local }
120
120
}
121
121
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.
123
125
type T ;
126
+ /// Converts an object to the equivalent Stable MIR representation.
124
127
fn stable ( & self ) -> Self :: T ;
125
128
}
126
129
@@ -211,34 +214,38 @@ impl Stable for mir::UnwindAction {
211
214
}
212
215
}
213
216
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
+ }
242
249
}
243
250
}
244
251
}
@@ -363,7 +370,7 @@ impl<'tcx> Stable for mir::Terminator<'tcx> {
363
370
Assert { cond, expected, msg, target, unwind } => Terminator :: Assert {
364
371
cond : cond. stable ( ) ,
365
372
expected : * expected,
366
- msg : rustc_assert_msg_to_msg ( msg) ,
373
+ msg : msg. stable ( ) ,
367
374
target : target. as_usize ( ) ,
368
375
unwind : unwind. stable ( ) ,
369
376
} ,
0 commit comments