1/// Triggers a panic with a detailed bug report message, while ensuring the panic is ignored in coverage reports.
2///
3/// This macro is useful in situations where an unreachable code path is hit or when a bug occurs.
4///
5/// # Parameters
6///
7/// - `msg`: A string expression describing the cause of the panic or bug.
8///
9/// ```
10#[macro_export]
11macro_rules! bug {
12 ($msg:expr)=> {
13$crate::bug!($msg,)
14 };
1516 ($msg:expr, $($arg:tt)*) => {{
17let formatted_msg = format!($msg, $($arg)*);
18let full_message = format!(
19r#"
20This should never happen, sorry!
2122However, it did happen, so it must be a bug. Please report it to us!
2324Conjure Oxide is actively developed and maintained. We will get back to you as soon as possible.
2526You can help us by providing a minimal failing example.
2728Issue tracker: http://github.com/conjure-cp/conjure-oxide/issues
2930version: {}
31location: {}:{}:{}
3233{}
34"#, git_version::git_version!(),file!(),module_path!(),line!(), &formatted_msg);
3536panic!("{}", full_message);
37 }};
38}