@@ -137,8 +137,11 @@ fn smir_crate(tcx: TyCtxt<'_>, crate_num: CrateNum) -> stable_mir::Crate {
137
137
stable_mir:: Crate { id : crate_num. into ( ) , name : crate_name, is_local }
138
138
}
139
139
140
- pub trait Stable {
140
+ /// Trait used to convert between an internal MIR type to a Stable MIR type.
141
+ pub ( crate ) trait Stable {
142
+ /// The stable representation of the type implementing Stable.
141
143
type T ;
144
+ /// Converts an object to the equivalent Stable MIR representation.
142
145
fn stable ( & self ) -> Self :: T ;
143
146
}
144
147
@@ -229,34 +232,38 @@ impl Stable for mir::UnwindAction {
229
232
}
230
233
}
231
234
232
- fn rustc_assert_msg_to_msg < ' tcx > (
233
- assert_message : & rustc_middle:: mir:: AssertMessage < ' tcx > ,
234
- ) -> stable_mir:: mir:: AssertMessage {
235
- use rustc_middle:: mir:: AssertKind ;
236
- match assert_message {
237
- AssertKind :: BoundsCheck { len, index } => {
238
- stable_mir:: mir:: AssertMessage :: BoundsCheck { len : len. stable ( ) , index : index. stable ( ) }
239
- }
240
- AssertKind :: Overflow ( bin_op, op1, op2) => {
241
- stable_mir:: mir:: AssertMessage :: Overflow ( bin_op. stable ( ) , op1. stable ( ) , op2. stable ( ) )
242
- }
243
- AssertKind :: OverflowNeg ( op) => stable_mir:: mir:: AssertMessage :: OverflowNeg ( op. stable ( ) ) ,
244
- AssertKind :: DivisionByZero ( op) => {
245
- stable_mir:: mir:: AssertMessage :: DivisionByZero ( op. stable ( ) )
246
- }
247
- AssertKind :: RemainderByZero ( op) => {
248
- stable_mir:: mir:: AssertMessage :: RemainderByZero ( op. stable ( ) )
249
- }
250
- AssertKind :: ResumedAfterReturn ( generator) => {
251
- stable_mir:: mir:: AssertMessage :: ResumedAfterReturn ( generator. stable ( ) )
252
- }
253
- AssertKind :: ResumedAfterPanic ( generator) => {
254
- stable_mir:: mir:: AssertMessage :: ResumedAfterPanic ( generator. stable ( ) )
255
- }
256
- AssertKind :: MisalignedPointerDereference { required, found } => {
257
- stable_mir:: mir:: AssertMessage :: MisalignedPointerDereference {
258
- required : required. stable ( ) ,
259
- found : found. stable ( ) ,
235
+ impl < ' tcx > Stable for mir:: AssertMessage < ' tcx > {
236
+ type T = stable_mir:: mir:: AssertMessage ;
237
+ fn stable ( & self ) -> Self :: T {
238
+ use rustc_middle:: mir:: AssertKind ;
239
+ match self {
240
+ AssertKind :: BoundsCheck { len, index } => stable_mir:: mir:: AssertMessage :: BoundsCheck {
241
+ len : len. stable ( ) ,
242
+ index : index. stable ( ) ,
243
+ } ,
244
+ AssertKind :: Overflow ( bin_op, op1, op2) => stable_mir:: mir:: AssertMessage :: Overflow (
245
+ bin_op. stable ( ) ,
246
+ op1. stable ( ) ,
247
+ op2. stable ( ) ,
248
+ ) ,
249
+ AssertKind :: OverflowNeg ( op) => stable_mir:: mir:: AssertMessage :: OverflowNeg ( op. stable ( ) ) ,
250
+ AssertKind :: DivisionByZero ( op) => {
251
+ stable_mir:: mir:: AssertMessage :: DivisionByZero ( op. stable ( ) )
252
+ }
253
+ AssertKind :: RemainderByZero ( op) => {
254
+ stable_mir:: mir:: AssertMessage :: RemainderByZero ( op. stable ( ) )
255
+ }
256
+ AssertKind :: ResumedAfterReturn ( generator) => {
257
+ stable_mir:: mir:: AssertMessage :: ResumedAfterReturn ( generator. stable ( ) )
258
+ }
259
+ AssertKind :: ResumedAfterPanic ( generator) => {
260
+ stable_mir:: mir:: AssertMessage :: ResumedAfterPanic ( generator. stable ( ) )
261
+ }
262
+ AssertKind :: MisalignedPointerDereference { required, found } => {
263
+ stable_mir:: mir:: AssertMessage :: MisalignedPointerDereference {
264
+ required : required. stable ( ) ,
265
+ found : found. stable ( ) ,
266
+ }
260
267
}
261
268
}
262
269
}
@@ -381,7 +388,7 @@ impl<'tcx> Stable for mir::Terminator<'tcx> {
381
388
Assert { cond, expected, msg, target, unwind } => Terminator :: Assert {
382
389
cond : cond. stable ( ) ,
383
390
expected : * expected,
384
- msg : rustc_assert_msg_to_msg ( msg) ,
391
+ msg : msg. stable ( ) ,
385
392
target : target. as_usize ( ) ,
386
393
unwind : unwind. stable ( ) ,
387
394
} ,
0 commit comments