Skip to content

Commit 6975632

Browse files
committed
Implement Stable for AssertMessage
1 parent 44d0fce commit 6975632

File tree

1 file changed

+37
-30
lines changed
  • compiler/rustc_smir/src/rustc_smir

1 file changed

+37
-30
lines changed

compiler/rustc_smir/src/rustc_smir/mod.rs

+37-30
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,11 @@ fn smir_crate(tcx: TyCtxt<'_>, crate_num: CrateNum) -> stable_mir::Crate {
137137
stable_mir::Crate { id: crate_num.into(), name: crate_name, is_local }
138138
}
139139

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.
141143
type T;
144+
/// Converts an object to the equivalent Stable MIR representation.
142145
fn stable(&self) -> Self::T;
143146
}
144147

@@ -229,34 +232,38 @@ impl Stable for mir::UnwindAction {
229232
}
230233
}
231234

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+
}
260267
}
261268
}
262269
}
@@ -381,7 +388,7 @@ impl<'tcx> Stable for mir::Terminator<'tcx> {
381388
Assert { cond, expected, msg, target, unwind } => Terminator::Assert {
382389
cond: cond.stable(),
383390
expected: *expected,
384-
msg: rustc_assert_msg_to_msg(msg),
391+
msg: msg.stable(),
385392
target: target.as_usize(),
386393
unwind: unwind.stable(),
387394
},

0 commit comments

Comments
 (0)