Add some docs to bug
, span_bug
and delay_span_bug
This commit is contained in:
parent
e5e5fcb0b7
commit
0047e25090
4 changed files with 34 additions and 3 deletions
|
@ -1,3 +1,13 @@
|
|||
/// A macro for triggering an ICE.
|
||||
/// Calling `bug` instead of panicking will result in a nicer error message and should
|
||||
/// therefore be prefered over `panic`/`unreachable` or others.
|
||||
///
|
||||
/// If you have a span available, you should use [`span_bug`] instead.
|
||||
///
|
||||
/// If the bug should only be emitted when compilation didn't fail, [`Session::delay_span_bug`] may be useful.
|
||||
///
|
||||
/// [`Session::delay_span_bug`]: rustc_session::Session::delay_span_bug
|
||||
/// [`span_bug`]: crate::span_bug
|
||||
#[macro_export]
|
||||
macro_rules! bug {
|
||||
() => ( $crate::bug!("impossible case reached") );
|
||||
|
@ -8,6 +18,14 @@ macro_rules! bug {
|
|||
});
|
||||
}
|
||||
|
||||
/// A macro for triggering an ICE with a span.
|
||||
/// Calling `span_bug!` instead of panicking will result in a nicer error message and point
|
||||
/// at the code the compiler was compiling when it ICEd. This is the preferred way to trigger
|
||||
/// ICEs.
|
||||
///
|
||||
/// If the bug should only be emitted when compilation didn't fail, [`Session::delay_span_bug`] may be useful.
|
||||
///
|
||||
/// [`Session::delay_span_bug`]: rustc_session::Session::delay_span_bug
|
||||
#[macro_export]
|
||||
macro_rules! span_bug {
|
||||
($span:expr, $msg:expr) => ({ $crate::util::bug::span_bug_fmt($span, ::std::format_args!($msg)) });
|
||||
|
|
|
@ -35,8 +35,7 @@ fn opt_span_bug_fmt<S: Into<MultiSpan>>(
|
|||
(Some(tcx), None) => tcx.sess.diagnostic().bug(&msg),
|
||||
(None, _) => panic_any(msg),
|
||||
}
|
||||
});
|
||||
unreachable!();
|
||||
})
|
||||
}
|
||||
|
||||
/// A query to trigger a `delay_span_bug`. Clearly, if one has a `tcx` one can already trigger a
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue