Auto merge of #79100 - a1phyr:better_assert_eq, r=m-ou-se

Improve assert_eq! and assert_ne!

This PR improves `assert_eq!` and `assert_ne!` by moving the panicking code in an external function.

It does not change the fast path, but the move of the formatting in the cold path (the panic) may have a positive effect on in instruction cache use and with inlining.

Moreover, the use of trait objects instead of generic may improve compile times for `assert_eq!`-heavy code.

Godbolt link: ~~https://rust.godbolt.org/z/TYa9MT~~ \
Updated: https://rust.godbolt.org/z/bzE84x
This commit is contained in:
bors 2021-02-21 05:41:09 +00:00
commit ed58a2b03b
15 changed files with 303 additions and 842 deletions

View File

@ -53,32 +53,30 @@ macro_rules! panic {
/// ```
#[macro_export]
#[stable(feature = "rust1", since = "1.0.0")]
#[allow_internal_unstable(core_panic)]
macro_rules! assert_eq {
($left:expr, $right:expr $(,)?) => ({
match (&$left, &$right) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = $crate::panicking::AssertKind::Eq;
// The reborrows below are intentional. Without them, the stack slot for the
// borrow is initialized even before the values are compared, leading to a
// noticeable slow down.
$crate::panic!(r#"assertion failed: `(left == right)`
left: `{:?}`,
right: `{:?}`"#, &*left_val, &*right_val)
$crate::panicking::assert_failed(kind, &*left_val, &*right_val, $crate::option::Option::None);
}
}
}
});
($left:expr, $right:expr, $($arg:tt)+) => ({
match (&($left), &($right)) {
match (&$left, &$right) {
(left_val, right_val) => {
if !(*left_val == *right_val) {
let kind = $crate::panicking::AssertKind::Eq;
// The reborrows below are intentional. Without them, the stack slot for the
// borrow is initialized even before the values are compared, leading to a
// noticeable slow down.
$crate::panic!(r#"assertion failed: `(left == right)`
left: `{:?}`,
right: `{:?}`: {}"#, &*left_val, &*right_val,
$crate::format_args!($($arg)+))
$crate::panicking::assert_failed(kind, &*left_val, &*right_val, $crate::option::Option::Some($crate::format_args!($($arg)+)));
}
}
}
@ -104,17 +102,17 @@ macro_rules! assert_eq {
/// ```
#[macro_export]
#[stable(feature = "assert_ne", since = "1.13.0")]
#[allow_internal_unstable(core_panic)]
macro_rules! assert_ne {
($left:expr, $right:expr $(,)?) => ({
match (&$left, &$right) {
(left_val, right_val) => {
if *left_val == *right_val {
let kind = $crate::panicking::AssertKind::Ne;
// The reborrows below are intentional. Without them, the stack slot for the
// borrow is initialized even before the values are compared, leading to a
// noticeable slow down.
$crate::panic!(r#"assertion failed: `(left != right)`
left: `{:?}`,
right: `{:?}`"#, &*left_val, &*right_val)
$crate::panicking::assert_failed(kind, &*left_val, &*right_val, $crate::option::Option::None);
}
}
}
@ -123,13 +121,11 @@ macro_rules! assert_ne {
match (&($left), &($right)) {
(left_val, right_val) => {
if *left_val == *right_val {
let kind = $crate::panicking::AssertKind::Ne;
// The reborrows below are intentional. Without them, the stack slot for the
// borrow is initialized even before the values are compared, leading to a
// noticeable slow down.
$crate::panic!(r#"assertion failed: `(left != right)`
left: `{:?}`,
right: `{:?}`: {}"#, &*left_val, &*right_val,
$crate::format_args!($($arg)+))
$crate::panicking::assert_failed(kind, &*left_val, &*right_val, $crate::option::Option::Some($crate::format_args!($($arg)+)));
}
}
}

View File

@ -91,3 +91,54 @@ pub fn panic_fmt(fmt: fmt::Arguments<'_>) -> ! {
// SAFETY: `panic_impl` is defined in safe Rust code and thus is safe to call.
unsafe { panic_impl(&pi) }
}
#[derive(Debug)]
#[doc(hidden)]
pub enum AssertKind {
Eq,
Ne,
}
/// Internal function for `assert_eq!` and `assert_ne!` macros
#[cold]
#[track_caller]
#[doc(hidden)]
pub fn assert_failed<T, U>(
kind: AssertKind,
left: &T,
right: &U,
args: Option<fmt::Arguments<'_>>,
) -> !
where
T: fmt::Debug + ?Sized,
U: fmt::Debug + ?Sized,
{
#[track_caller]
fn inner(
kind: AssertKind,
left: &dyn fmt::Debug,
right: &dyn fmt::Debug,
args: Option<fmt::Arguments<'_>>,
) -> ! {
let op = match kind {
AssertKind::Eq => "==",
AssertKind::Ne => "!=",
};
match args {
Some(args) => panic!(
r#"assertion failed: `(left {} right)`
left: `{:?}`,
right: `{:?}: {}`"#,
op, left, right, args
),
None => panic!(
r#"assertion failed: `(left {} right)`
left: `{:?}`,
right: `{:?}`"#,
op, left, right,
),
}
}
inner(kind, &left, &right, args)
}

View File

@ -8,56 +8,23 @@
let _3: i32; // in scope 0 at $DIR/issue-73223.rs:3:14: 3:15
let mut _5: (&i32, &i32); // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _6: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _9: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _10: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _11: i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _12: std::fmt::Arguments; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _13: &[&str; 3]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _14: &[std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let _15: [std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _16: (&&i32, &&i32); // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let _17: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _18: &&i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _19: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _20: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _21: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _7: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _8: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _9: i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _11: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _12: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _13: std::option::Option<std::fmt::Arguments>; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 1 {
debug split => _1; // in scope 1 at $DIR/issue-73223.rs:2:9: 2:14
let _4: std::option::Option<i32>; // in scope 1 at $DIR/issue-73223.rs:7:9: 7:14
scope 3 {
debug _prev => _4; // in scope 3 at $DIR/issue-73223.rs:7:9: 7:14
let _7: &i32; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _8: &i32; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 4 {
debug left_val => _7; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
debug right_val => _8; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
debug left_val => _11; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
debug right_val => _12; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _10: core::panicking::AssertKind; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 5 {
debug arg0 => _24; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
debug arg1 => _27; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 6 (inlined ArgumentV1::new::<&i32>) { // at $SRC_DIR/core/src/panic.rs:LL:COL
debug x => _24; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
debug f => _23; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _22: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _23: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _24: &&i32; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
scope 7 {
}
}
scope 8 (inlined ArgumentV1::new::<&i32>) { // at $SRC_DIR/core/src/panic.rs:LL:COL
debug x => _27; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
debug f => _26; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _25: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _26: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _27: &&i32; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
scope 9 {
}
}
}
scope 10 (inlined Arguments::new_v1) { // at $SRC_DIR/core/src/panic.rs:LL:COL
debug pieces => (_12.0: &[&str]); // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
debug args => _29; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _28: std::option::Option<&[std::fmt::rt::v1::Argument]>; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _29: &[std::fmt::ArgumentV1]; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
debug kind => _10; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
}
}
}
@ -79,113 +46,49 @@
((_4 as Some).0: i32) = _1; // scope 1 at $DIR/issue-73223.rs:7:22: 7:27
discriminant(_4) = 1; // scope 1 at $DIR/issue-73223.rs:7:17: 7:28
(_5.0: &i32) = &_1; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_6 = const main::promoted[1]; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_6 = const main::promoted[0]; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// ty::Const
// + ty: &i32
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[1]))
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[1])) }
(_5.1: &i32) = move _6; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_7); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_7 = (_5.0: &i32); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_8); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_8 = (_5.1: &i32); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_9); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_10); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_11); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_11 = (*_7); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_10 = Eq(move _11, const 1_i32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_11); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_9 = Not(move _10); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_10); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
switchInt(move _9) -> [false: bb2, otherwise: bb1]; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
}
bb1: {
_13 = const main::promoted[0]; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// ty::Const
// + ty: &[&str; 3]
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0]))
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: &[&str; 3], val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0])) }
(_12.0: &[&str]) = move _13 as &[&str] (Pointer(Unsize)); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_15); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_17); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_17 = _7; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
(_16.0: &&i32) = &_17; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_18); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_19); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_19 = _8; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_18 = &_19; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
(_16.1: &&i32) = move _18; // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_18); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
_24 = (_16.0: &&i32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_27 = (_16.1: &&i32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_23 = <&i32 as Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0])) }
(_5.1: &i32) = move _6; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_11 = (_5.0: &i32); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_12 = (_5.1: &i32); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_7); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_8); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_9); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_9 = (*_11); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_8 = Eq(move _9, const 1_i32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_9); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_7 = Not(move _8); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_8); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
switchInt(move _7) -> [false: bb2, otherwise: bb1]; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
}
bb1: {
StorageLive(_10); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
discriminant(_10) = 0; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_13); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
discriminant(_13) = 0; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
core::panicking::assert_failed::<i32, i32>(const core::panicking::AssertKind::Eq, move _11, move _12, move _13); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar(<ZST>)) }
StorageLive(_22); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
_22 = transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>>(move _23) -> bb3; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: for<'r, 's, 't0> fn(core::panicking::AssertKind, &'r i32, &'s i32, std::option::Option<std::fmt::Arguments<'t0>>) -> ! {core::panicking::assert_failed::<i32, i32>}, val: Value(Scalar(<ZST>)) }
// ty::Const
// + ty: core::panicking::AssertKind
// + val: Value(Scalar(0x00))
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar(<ZST>)) }
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: core::panicking::AssertKind, val: Value(Scalar(0x00)) }
}
bb2: {
StorageDead(_9); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_8); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_7); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_7); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_0 = const (); // scope 0 at $DIR/issue-73223.rs:1:11: 9:2
StorageDead(_1); // scope 0 at $DIR/issue-73223.rs:9:1: 9:2
return; // scope 0 at $DIR/issue-73223.rs:9:2: 9:2
}
bb3: {
(_20.0: &core::fmt::Opaque) = transmute::<&&i32, &core::fmt::Opaque>(move _24) -> bb4; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar(<ZST>)) }
}
bb4: {
(_20.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _22; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_22); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
_26 = <&i32 as Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar(<ZST>)) }
StorageLive(_25); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
_25 = transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>>(move _26) -> bb5; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar(<ZST>)) }
}
bb5: {
(_21.0: &core::fmt::Opaque) = transmute::<&&i32, &core::fmt::Opaque>(move _27) -> bb6; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar(<ZST>)) }
}
bb6: {
(_21.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _25; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_25); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
_15 = [move _20, move _21]; // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
_14 = &_15; // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
_29 = move _14 as &[std::fmt::ArgumentV1] (Pointer(Unsize)); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_28); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
discriminant(_28) = 0; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
(_12.1: std::option::Option<&[std::fmt::rt::v1::Argument]>) = move _28; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
(_12.2: &[std::fmt::ArgumentV1]) = move _29; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_28); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
core::panicking::panic_fmt(move _12); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: for<'r> fn(std::fmt::Arguments<'r>) -> ! {core::panicking::panic_fmt}, val: Value(Scalar(<ZST>)) }
}
}

View File

@ -8,56 +8,23 @@
let _3: i32; // in scope 0 at $DIR/issue-73223.rs:3:14: 3:15
let mut _5: (&i32, &i32); // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _6: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _9: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _10: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _11: i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _12: std::fmt::Arguments; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _13: &[&str; 3]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _14: &[std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let _15: [std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _16: (&&i32, &&i32); // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let _17: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _18: &&i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _19: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _20: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _21: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _7: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _8: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _9: i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _11: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _12: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _13: std::option::Option<std::fmt::Arguments>; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 1 {
debug split => _1; // in scope 1 at $DIR/issue-73223.rs:2:9: 2:14
let _4: std::option::Option<i32>; // in scope 1 at $DIR/issue-73223.rs:7:9: 7:14
scope 3 {
debug _prev => _4; // in scope 3 at $DIR/issue-73223.rs:7:9: 7:14
let _7: &i32; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _8: &i32; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 4 {
debug left_val => _7; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
debug right_val => _8; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
debug left_val => _11; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
debug right_val => _12; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _10: core::panicking::AssertKind; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 5 {
debug arg0 => _24; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
debug arg1 => _27; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 6 (inlined ArgumentV1::new::<&i32>) { // at $SRC_DIR/core/src/panic.rs:LL:COL
debug x => _24; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
debug f => _23; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _22: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _23: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _24: &&i32; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
scope 7 {
}
}
scope 8 (inlined ArgumentV1::new::<&i32>) { // at $SRC_DIR/core/src/panic.rs:LL:COL
debug x => _27; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
debug f => _26; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _25: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _26: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _27: &&i32; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
scope 9 {
}
}
}
scope 10 (inlined Arguments::new_v1) { // at $SRC_DIR/core/src/panic.rs:LL:COL
debug pieces => (_12.0: &[&str]); // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
debug args => _29; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _28: std::option::Option<&[std::fmt::rt::v1::Argument]>; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _29: &[std::fmt::ArgumentV1]; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
debug kind => _10; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
}
}
}
@ -79,113 +46,49 @@
((_4 as Some).0: i32) = _1; // scope 1 at $DIR/issue-73223.rs:7:22: 7:27
discriminant(_4) = 1; // scope 1 at $DIR/issue-73223.rs:7:17: 7:28
(_5.0: &i32) = &_1; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_6 = const main::promoted[1]; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_6 = const main::promoted[0]; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// ty::Const
// + ty: &i32
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[1]))
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[1])) }
(_5.1: &i32) = move _6; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_7); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_7 = (_5.0: &i32); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_8); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_8 = (_5.1: &i32); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_9); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_10); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_11); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_11 = (*_7); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_10 = Eq(move _11, const 1_i32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_11); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_9 = Not(move _10); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_10); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
switchInt(move _9) -> [false: bb2, otherwise: bb1]; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
}
bb1: {
_13 = const main::promoted[0]; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// ty::Const
// + ty: &[&str; 3]
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0]))
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: &[&str; 3], val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0])) }
(_12.0: &[&str]) = move _13 as &[&str] (Pointer(Unsize)); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_15); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_17); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_17 = _7; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
(_16.0: &&i32) = &_17; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_18); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_19); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_19 = _8; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_18 = &_19; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
(_16.1: &&i32) = move _18; // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_18); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
_24 = (_16.0: &&i32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_27 = (_16.1: &&i32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_23 = <&i32 as Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0])) }
(_5.1: &i32) = move _6; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_11 = (_5.0: &i32); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_12 = (_5.1: &i32); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_7); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_8); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_9); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_9 = (*_11); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_8 = Eq(move _9, const 1_i32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_9); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_7 = Not(move _8); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_8); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
switchInt(move _7) -> [false: bb2, otherwise: bb1]; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
}
bb1: {
StorageLive(_10); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
discriminant(_10) = 0; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_13); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
discriminant(_13) = 0; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
core::panicking::assert_failed::<i32, i32>(const core::panicking::AssertKind::Eq, move _11, move _12, move _13); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar(<ZST>)) }
StorageLive(_22); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
_22 = transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>>(move _23) -> bb3; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: for<'r, 's, 't0> fn(core::panicking::AssertKind, &'r i32, &'s i32, std::option::Option<std::fmt::Arguments<'t0>>) -> ! {core::panicking::assert_failed::<i32, i32>}, val: Value(Scalar(<ZST>)) }
// ty::Const
// + ty: core::panicking::AssertKind
// + val: Value(Scalar(0x00))
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar(<ZST>)) }
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: core::panicking::AssertKind, val: Value(Scalar(0x00)) }
}
bb2: {
StorageDead(_9); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_8); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_7); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_7); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_0 = const (); // scope 0 at $DIR/issue-73223.rs:1:11: 9:2
StorageDead(_1); // scope 0 at $DIR/issue-73223.rs:9:1: 9:2
return; // scope 0 at $DIR/issue-73223.rs:9:2: 9:2
}
bb3: {
(_20.0: &core::fmt::Opaque) = transmute::<&&i32, &core::fmt::Opaque>(move _24) -> bb4; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar(<ZST>)) }
}
bb4: {
(_20.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _22; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_22); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
_26 = <&i32 as Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar(<ZST>)) }
StorageLive(_25); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
_25 = transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>>(move _26) -> bb5; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar(<ZST>)) }
}
bb5: {
(_21.0: &core::fmt::Opaque) = transmute::<&&i32, &core::fmt::Opaque>(move _27) -> bb6; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar(<ZST>)) }
}
bb6: {
(_21.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _25; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_25); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
_15 = [move _20, move _21]; // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
_14 = &_15; // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
_29 = move _14 as &[std::fmt::ArgumentV1] (Pointer(Unsize)); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_28); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
discriminant(_28) = 0; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
(_12.1: std::option::Option<&[std::fmt::rt::v1::Argument]>) = move _28; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
(_12.2: &[std::fmt::ArgumentV1]) = move _29; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_28); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
core::panicking::panic_fmt(move _12); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: for<'r> fn(std::fmt::Arguments<'r>) -> ! {core::panicking::panic_fmt}, val: Value(Scalar(<ZST>)) }
}
}

View File

@ -18,27 +18,14 @@
let mut _16: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _17: i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _18: i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _19: !; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _20: std::fmt::Arguments; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _21: &[&str]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _22: &[&str; 3]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _23: &[&str; 3]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _24: [&str; 3]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _25: &[std::fmt::ArgumentV1]; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _26: &[std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let _27: &[std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let _28: [std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _29: (&&i32, &&i32); // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _30: &&i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _31: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _32: &&i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _33: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _36: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _37: &&i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _38: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _39: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _40: &&i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _41: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _19: !; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _21: !; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _22: core::panicking::AssertKind; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _23: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _24: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _25: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _26: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _27: std::option::Option<std::fmt::Arguments>; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 1 {
debug split => _1; // in scope 1 at $DIR/issue-73223.rs:2:9: 2:14
let _6: std::option::Option<i32>; // in scope 1 at $DIR/issue-73223.rs:7:9: 7:14
@ -46,43 +33,13 @@
debug _prev => _6; // in scope 3 at $DIR/issue-73223.rs:7:9: 7:14
let _13: &i32; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _14: &i32; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _43: &i32; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _28: &i32; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 4 {
debug left_val => _13; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
debug right_val => _14; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _34: &&i32; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _35: &&i32; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _42: &[&str; 3]; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _20: core::panicking::AssertKind; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 5 {
debug arg0 => _34; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
debug arg1 => _35; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 6 (inlined ArgumentV1::new::<&i32>) { // at $SRC_DIR/core/src/panic.rs:LL:COL
debug x => _37; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
debug f => _38; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _44: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _45: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _46: &core::fmt::Opaque; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _47: &&i32; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
scope 7 {
}
}
scope 8 (inlined ArgumentV1::new::<&i32>) { // at $SRC_DIR/core/src/panic.rs:LL:COL
debug x => _40; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
debug f => _41; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _48: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _49: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _50: &core::fmt::Opaque; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _51: &&i32; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
scope 9 {
}
}
}
scope 10 (inlined Arguments::new_v1) { // at $SRC_DIR/core/src/panic.rs:LL:COL
debug pieces => _21; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
debug args => _25; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _52: &[&str]; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _53: std::option::Option<&[std::fmt::rt::v1::Argument]>; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _54: &[std::fmt::ArgumentV1]; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
debug kind => _20; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
}
}
}
@ -124,14 +81,14 @@
StorageLive(_10); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_10 = &_1; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_11); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_43 = const main::promoted[1]; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_28 = const main::promoted[0]; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// ty::Const
// + ty: &i32
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[1]))
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0]))
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[1])) }
_11 = _43; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0])) }
_11 = _28; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
(_9.0: &i32) = move _10; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
(_9.1: &i32) = move _11; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_11); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
@ -155,58 +112,37 @@
}
bb3: {
StorageLive(_19); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_20); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_21); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_22); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_23); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_42 = const main::promoted[0]; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_20); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
discriminant(_20) = 0; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_21); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_22); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_22 = const core::panicking::AssertKind::Eq; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// ty::Const
// + ty: &[&str; 3]
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0]))
// + ty: core::panicking::AssertKind
// + val: Value(Scalar(0x00))
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: &[&str; 3], val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0])) }
_23 = _42; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_22 = _23; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_21 = move _22 as &[&str] (Pointer(Unsize)); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_22); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_25); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_26); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_27); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_28); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_29); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_30); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_31); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_31 = _13; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_30 = &_31; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_33); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_33 = _14; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_32 = &_33; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
(_29.0: &&i32) = move _30; // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
(_29.1: &&i32) = move _32; // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_32); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_30); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_34); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_34 = (_29.0: &&i32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_35); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_35 = (_29.1: &&i32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_36); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_37); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_37 = _34; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_38); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_38 = <&i32 as Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: core::panicking::AssertKind, val: Value(Scalar(0x00)) }
StorageLive(_23); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_24); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_24 = _13; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_23 = _24; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_25); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_26); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_26 = _14; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_25 = _26; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_27); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
discriminant(_27) = 0; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
core::panicking::assert_failed::<i32, i32>(const core::panicking::AssertKind::Eq, move _23, move _25, move _27); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar(<ZST>)) }
StorageLive(_44); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_45); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
_45 = _38; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
_44 = transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>>(move _45) -> bb5; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: for<'r, 's, 't0> fn(core::panicking::AssertKind, &'r i32, &'s i32, std::option::Option<std::fmt::Arguments<'t0>>) -> ! {core::panicking::assert_failed::<i32, i32>}, val: Value(Scalar(<ZST>)) }
// ty::Const
// + ty: core::panicking::AssertKind
// + val: Value(Scalar(0x00))
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar(<ZST>)) }
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: core::panicking::AssertKind, val: Value(Scalar(0x00)) }
}
bb4: {
@ -221,89 +157,5 @@
StorageDead(_1); // scope 0 at $DIR/issue-73223.rs:9:1: 9:2
return; // scope 0 at $DIR/issue-73223.rs:9:2: 9:2
}
bb5: {
StorageDead(_45); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_46); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_47); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
_47 = _37; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
_46 = transmute::<&&i32, &core::fmt::Opaque>(move _47) -> bb6; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar(<ZST>)) }
}
bb6: {
StorageDead(_47); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
(_36.0: &core::fmt::Opaque) = move _46; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
(_36.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _44; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_46); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_44); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_38); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_37); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_39); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_40); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_40 = _35; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_41); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_41 = <&i32 as Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar(<ZST>)) }
StorageLive(_48); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_49); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
_49 = _41; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
_48 = transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>>(move _49) -> bb7; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar(<ZST>)) }
}
bb7: {
StorageDead(_49); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_50); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_51); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
_51 = _40; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
_50 = transmute::<&&i32, &core::fmt::Opaque>(move _51) -> bb8; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar(<ZST>)) }
}
bb8: {
StorageDead(_51); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
(_39.0: &core::fmt::Opaque) = move _50; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
(_39.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _48; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_50); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_48); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_41); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_40); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
_28 = [move _36, move _39]; // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_39); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_36); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_35); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_34); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
_27 = &_28; // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
_26 = _27; // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
_25 = move _26 as &[std::fmt::ArgumentV1] (Pointer(Unsize)); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_26); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_52); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
_52 = _21; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_53); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
discriminant(_53) = 0; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_54); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
_54 = _25; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
(_20.0: &[&str]) = move _52; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
(_20.1: std::option::Option<&[std::fmt::rt::v1::Argument]>) = move _53; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
(_20.2: &[std::fmt::ArgumentV1]) = move _54; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_54); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_53); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_52); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_25); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_21); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
core::panicking::panic_fmt(move _20); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: for<'r> fn(std::fmt::Arguments<'r>) -> ! {core::panicking::panic_fmt}, val: Value(Scalar(<ZST>)) }
}
}

View File

@ -18,27 +18,14 @@
let mut _16: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _17: i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _18: i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _19: !; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _20: std::fmt::Arguments; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _21: &[&str]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _22: &[&str; 3]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _23: &[&str; 3]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _24: [&str; 3]; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _25: &[std::fmt::ArgumentV1]; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _26: &[std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let _27: &[std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let _28: [std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _29: (&&i32, &&i32); // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _30: &&i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _31: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _32: &&i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _33: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _36: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _37: &&i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _38: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _39: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _40: &&i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _41: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _19: !; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _21: !; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _22: core::panicking::AssertKind; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _23: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _24: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _25: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _26: &i32; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _27: std::option::Option<std::fmt::Arguments>; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 1 {
debug split => _1; // in scope 1 at $DIR/issue-73223.rs:2:9: 2:14
let _6: std::option::Option<i32>; // in scope 1 at $DIR/issue-73223.rs:7:9: 7:14
@ -46,43 +33,13 @@
debug _prev => _6; // in scope 3 at $DIR/issue-73223.rs:7:9: 7:14
let _13: &i32; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _14: &i32; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _43: &i32; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _28: &i32; // in scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 4 {
debug left_val => _13; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
debug right_val => _14; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _34: &&i32; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _35: &&i32; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let mut _42: &[&str; 3]; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
let _20: core::panicking::AssertKind; // in scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 5 {
debug arg0 => _34; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
debug arg1 => _35; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
scope 6 (inlined ArgumentV1::new::<&i32>) { // at $SRC_DIR/core/src/panic.rs:LL:COL
debug x => _37; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
debug f => _38; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _44: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _45: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _46: &core::fmt::Opaque; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _47: &&i32; // in scope 6 at $SRC_DIR/core/src/panic.rs:LL:COL
scope 7 {
}
}
scope 8 (inlined ArgumentV1::new::<&i32>) { // at $SRC_DIR/core/src/panic.rs:LL:COL
debug x => _40; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
debug f => _41; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _48: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _49: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _50: &core::fmt::Opaque; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _51: &&i32; // in scope 8 at $SRC_DIR/core/src/panic.rs:LL:COL
scope 9 {
}
}
}
scope 10 (inlined Arguments::new_v1) { // at $SRC_DIR/core/src/panic.rs:LL:COL
debug pieces => _21; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
debug args => _25; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _52: &[&str]; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _53: std::option::Option<&[std::fmt::rt::v1::Argument]>; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
let mut _54: &[std::fmt::ArgumentV1]; // in scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
debug kind => _20; // in scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
}
}
}
@ -124,14 +81,14 @@
StorageLive(_10); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_10 = &_1; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_11); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_43 = const main::promoted[1]; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_28 = const main::promoted[0]; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// ty::Const
// + ty: &i32
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[1]))
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0]))
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[1])) }
_11 = _43; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0])) }
_11 = _28; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
(_9.0: &i32) = move _10; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
(_9.1: &i32) = move _11; // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_11); // scope 3 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
@ -155,58 +112,37 @@
}
bb3: {
StorageLive(_19); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_20); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_21); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_22); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_23); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_42 = const main::promoted[0]; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_20); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
discriminant(_20) = 0; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_21); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_22); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_22 = const core::panicking::AssertKind::Eq; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// ty::Const
// + ty: &[&str; 3]
// + val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0]))
// + ty: core::panicking::AssertKind
// + val: Value(Scalar(0x00))
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: &[&str; 3], val: Unevaluated(WithOptConstParam { did: DefId(0:3 ~ issue_73223[317d]::main), const_param_did: None }, [], Some(promoted[0])) }
_23 = _42; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_22 = _23; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_21 = move _22 as &[&str] (Pointer(Unsize)); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageDead(_22); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_25); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_26); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_27); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_28); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_29); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_30); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_31); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_31 = _13; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_30 = &_31; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_33); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_33 = _14; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_32 = &_33; // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
(_29.0: &&i32) = move _30; // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
(_29.1: &&i32) = move _32; // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_32); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_30); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_34); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_34 = (_29.0: &&i32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_35); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_35 = (_29.1: &&i32); // scope 4 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_36); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_37); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_37 = _34; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_38); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_38 = <&i32 as Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: core::panicking::AssertKind, val: Value(Scalar(0x00)) }
StorageLive(_23); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_24); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_24 = _13; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_23 = _24; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_25); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_26); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_26 = _14; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_25 = _26; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_27); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
discriminant(_27) = 0; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
core::panicking::assert_failed::<i32, i32>(const core::panicking::AssertKind::Eq, move _23, move _25, move _27); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar(<ZST>)) }
StorageLive(_44); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_45); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
_45 = _38; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
_44 = transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>>(move _45) -> bb5; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: for<'r, 's, 't0> fn(core::panicking::AssertKind, &'r i32, &'s i32, std::option::Option<std::fmt::Arguments<'t0>>) -> ! {core::panicking::assert_failed::<i32, i32>}, val: Value(Scalar(<ZST>)) }
// ty::Const
// + ty: core::panicking::AssertKind
// + val: Value(Scalar(0x00))
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar(<ZST>)) }
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: core::panicking::AssertKind, val: Value(Scalar(0x00)) }
}
bb4: {
@ -221,89 +157,5 @@
StorageDead(_1); // scope 0 at $DIR/issue-73223.rs:9:1: 9:2
return; // scope 0 at $DIR/issue-73223.rs:9:2: 9:2
}
bb5: {
StorageDead(_45); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_46); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_47); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
_47 = _37; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
_46 = transmute::<&&i32, &core::fmt::Opaque>(move _47) -> bb6; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar(<ZST>)) }
}
bb6: {
StorageDead(_47); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
(_36.0: &core::fmt::Opaque) = move _46; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
(_36.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _44; // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_46); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_44); // scope 7 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_38); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_37); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_39); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_40); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_40 = _35; // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
StorageLive(_41); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
_41 = <&i32 as Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/macros/mod.rs:LL:COL
// + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar(<ZST>)) }
StorageLive(_48); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_49); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
_49 = _41; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
_48 = transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut Formatter<'t0>) -> Result<(), std::fmt::Error>>(move _49) -> bb7; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute::<for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar(<ZST>)) }
}
bb7: {
StorageDead(_49); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_50); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_51); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
_51 = _40; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
_50 = transmute::<&&i32, &core::fmt::Opaque>(move _51) -> bb8; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar(<ZST>)) }
}
bb8: {
StorageDead(_51); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
(_39.0: &core::fmt::Opaque) = move _50; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
(_39.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _48; // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_50); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_48); // scope 9 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_41); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_40); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
_28 = [move _36, move _39]; // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_39); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_36); // scope 5 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_35); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_34); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
_27 = &_28; // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
_26 = _27; // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
_25 = move _26 as &[std::fmt::ArgumentV1] (Pointer(Unsize)); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_26); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_52); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
_52 = _21; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_53); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
discriminant(_53) = 0; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageLive(_54); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
_54 = _25; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
(_20.0: &[&str]) = move _52; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
(_20.1: std::option::Option<&[std::fmt::rt::v1::Argument]>) = move _53; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
(_20.2: &[std::fmt::ArgumentV1]) = move _54; // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_54); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_53); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_52); // scope 10 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_25); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
StorageDead(_21); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
core::panicking::panic_fmt(move _20); // scope 4 at $SRC_DIR/core/src/panic.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/panic.rs:LL:COL
// + literal: Const { ty: for<'r> fn(std::fmt::Arguments<'r>) -> ! {core::panicking::panic_fmt}, val: Value(Scalar(<ZST>)) }
}
}

View File

@ -70,8 +70,8 @@ For revisions in Pull Requests (PR):
</head>
<body>
<div class="code" style="counter-reset: line 3"><span class="line"><span><span class="code even" style="--layer: 1"><span class="annotation">@0,1,2,3,4⦊</span>fn might_fail_assert(one_plus_one: u32) <span class="annotation">⦉@0,1,2,3,4</span></span></span><span class="code" style="--layer: 0">{</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="5:14-5:32: @0[6]: _73 = const might_fail_assert::promoted[4]
5:14-5:32: @0[7]: _7 = &amp;(*_73)
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="5:14-5:32: @0[6]: _53 = const might_fail_assert::promoted[3]
5:14-5:32: @0[7]: _7 = &amp;(*_53)
5:14-5:32: @0[8]: _6 = &amp;(*_7)
5:14-5:32: @0[9]: _5 = move _6 as &amp;[&amp;str] (Pointer(Unsize))
5:34-5:46: @0[17]: _14 = &amp;_1
@ -80,18 +80,18 @@ For revisions in Pull Requests (PR):
5:5-5:48: @0[22]: _15 = (_13.0: &amp;u32)
5:5-5:48: @0[25]: _17 = &amp;(*_15)
5:5-5:48: @0[27]: _18 = &lt;u32 as std::fmt::Display&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r u32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
5:5-5:48: @0.Call: _16 = std::fmt::ArgumentV1::new::&lt;u32&gt;(move _17, move _18) -&gt; [return: bb1, unwind: bb12]
5:5-5:48: @0.Call: _16 = std::fmt::ArgumentV1::new::&lt;u32&gt;(move _17, move _18) -&gt; [return: bb1, unwind: bb8]
5:5-5:48: @1[2]: _12 = [move _16]
5:5-5:48: @1[5]: _11 = &amp;_12
5:5-5:48: @1[6]: _10 = &amp;(*_11)
5:5-5:48: @1[7]: _9 = move _10 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
5:5-5:48: @1.Call: _4 = std::fmt::Arguments::new_v1(move _5, move _9) -&gt; [return: bb2, unwind: bb12]
5:5-5:48: @2.Call: _3 = std::io::_print(move _4) -&gt; [return: bb3, unwind: bb12]
5:5-5:48: @1.Call: _4 = std::fmt::Arguments::new_v1(move _5, move _9) -&gt; [return: bb2, unwind: bb8]
5:5-5:48: @2.Call: _3 = std::io::_print(move _4) -&gt; [return: bb3, unwind: bb8]
5:5-5:48: @3[6]: _2 = const ()"><span class="annotation">@0,1,2,3,4⦊</span>println!("does 1 + 1 = {}?", one_plus_one);<span class="annotation">⦉@0,1,2,3,4</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> assert_eq!(</span><span><span class="code even" style="--layer: 1" title="6:16-6:21: @3[11]: _23 = CheckedAdd(const 1_u32, const 1_u32)"><span class="annotation">@0,1,2,3,4⦊</span>1 + 1<span class="annotation">⦉@0,1,2,3,4</span></span></span><span class="code" style="--layer: 0">, one_plus_one, </span><span><span class="code odd" style="--layer: 1" title="6:37-6:61: @5[28]: _70 = const might_fail_assert::promoted[1]
6:37-6:61: @5[29]: _50 = &amp;(*_70)
6:37-6:61: @5[30]: _49 = &amp;(*_50)
6:37-6:61: @5[31]: _48 = move _49 as &amp;[&amp;str] (Pointer(Unsize))"><span class="annotation">@5,7,8,9,10,11</span>"the argument was wrong"<span class="annotation">⦉@5,7,8,9,10,11</span></span></span><span class="code" style="--layer: 0">);</span></span>
<span class="line"><span class="code" style="--layer: 0"> assert_eq!(</span><span><span class="code even" style="--layer: 1" title="6:16-6:21: @3[11]: _23 = CheckedAdd(const 1_u32, const 1_u32)"><span class="annotation">@0,1,2,3,4⦊</span>1 + 1<span class="annotation">⦉@0,1,2,3,4</span></span></span><span class="code" style="--layer: 0">, one_plus_one, </span><span><span class="code odd" style="--layer: 1" title="6:37-6:61: @5[19]: _51 = const might_fail_assert::promoted[1]
6:37-6:61: @5[20]: _43 = &amp;(*_51)
6:37-6:61: @5[21]: _42 = &amp;(*_43)
6:37-6:61: @5[22]: _41 = move _42 as &amp;[&amp;str] (Pointer(Unsize))"><span class="annotation">@5,7⦊</span>"the argument was wrong"<span class="annotation">⦉@5,7</span></span></span><span class="code" style="--layer: 0">);</span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code even" style="--layer: 1" title="7:2-7:2: @6.Return: return"><span class="annotation">@6⦊</span><span class="annotation">⦉@6</span></span></span></span></div>
</body>
</html>

View File

@ -71,56 +71,26 @@ For revisions in Pull Requests (PR):
<body>
<div class="code" style="counter-reset: line 72"><span class="line"><span><span class="code even" style="--layer: 1"><span class="annotation">@0⦊</span>fn main() <span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0">{</span></span>
<span class="line"><span class="code" style="--layer: 0"> if </span><span><span class="code even" style="--layer: 1" title="74:8-74:12: @0[1]: _1 = const true"><span class="annotation">@0⦊</span>true<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="75:9-75:26: @4[0]: _2 = const ()"><span class="annotation">@4⦊</span></span></span><span class="code even" style="--layer: 2" title="75:9-75:26: @3[5]: _75 = const main::promoted[3]
75:9-75:26: @3[6]: _18 = &amp;(*_75)
75:9-75:26: @3[7]: _17 = &amp;(*_18)
75:9-75:26: @3[8]: _16 = move _17 as &amp;[&amp;str] (Pointer(Unsize))
75:9-75:26: @3[17]: _26 = &amp;(*_8)
75:9-75:26: @3[18]: _25 = &amp;_26
75:9-75:26: @3[21]: _28 = &amp;(*_9)
75:9-75:26: @3[22]: _27 = &amp;_28
75:9-75:26: @3[23]: _24 = (move _25, move _27)
75:9-75:26: @3[26]: FakeRead(ForMatchedPlace, _24)
75:9-75:26: @3[28]: _29 = (_24.0: &amp;&amp;i32)
75:9-75:26: @3[30]: _30 = (_24.1: &amp;&amp;i32)
75:9-75:26: @3[33]: _32 = &amp;(*_29)
75:9-75:26: @3[35]: _33 = &lt;&amp;i32 as std::fmt::Debug&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r &amp;i32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
75:9-75:26: @3.Call: _31 = std::fmt::ArgumentV1::new::&lt;&amp;i32&gt;(move _32, move _33) -&gt; [return: bb5, unwind: bb14]
75:9-75:26: @5[4]: _35 = &amp;(*_30)
75:9-75:26: @5[6]: _36 = &lt;&amp;i32 as std::fmt::Debug&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r &amp;i32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
75:9-75:26: @5.Call: _34 = std::fmt::ArgumentV1::new::&lt;&amp;i32&gt;(move _35, move _36) -&gt; [return: bb6, unwind: bb14]
75:9-75:26: @6[2]: _23 = [move _31, move _34]
75:9-75:26: @6[7]: _22 = &amp;_23
75:9-75:26: @6[8]: _21 = &amp;(*_22)
75:9-75:26: @6[9]: _20 = move _21 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
75:9-75:26: @6.Call: _15 = std::fmt::Arguments::new_v1(move _16, move _20) -&gt; [return: bb7, unwind: bb14]
75:9-75:26: @7.Call: core::panicking::panic_fmt(move _15) -&gt; bb14"><span class="annotation">@3,5,6,7⦊</span>assert_eq!(1, 1);<span class="annotation">⦉@3,5,6,7</span></span><span><span class="code odd" style="--layer: 1" title="75:9-75:26: @4[0]: _2 = const ()"><span class="annotation">⦉@4</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code odd" style="--layer: 1" title="75:9-75:26: @4[0]: _2 = const ()"><span class="annotation">@4⦊</span></span></span><span class="code even" style="--layer: 2" title="75:9-75:26: @3[1]: _15 = core::panicking::AssertKind::Eq
75:9-75:26: @3[2]: FakeRead(ForLet, _15)
75:9-75:26: @3[5]: _17 = move _15
75:9-75:26: @3[8]: _19 = &amp;(*_8)
75:9-75:26: @3[9]: _18 = &amp;(*_19)
75:9-75:26: @3[12]: _21 = &amp;(*_9)
75:9-75:26: @3[13]: _20 = &amp;(*_21)
75:9-75:26: @3[15]: _22 = std::option::Option::&lt;std::fmt::Arguments&gt;::None
75:9-75:26: @3.Call: core::panicking::assert_failed::&lt;i32, i32&gt;(move _17, move _18, move _20, move _22) -&gt; bb8"><span class="annotation">@3⦊</span>assert_eq!(1, 1);<span class="annotation">⦉@3</span></span><span><span class="code odd" style="--layer: 1" title="75:9-75:26: @4[0]: _2 = const ()"><span class="annotation">⦉@4</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> } else {</span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="77:9-77:26: @9[0]: _37 = const ()"><span class="annotation">@9⦊</span></span></span><span class="code even" style="--layer: 2" title="77:9-77:26: @8[5]: _72 = const main::promoted[0]
77:9-77:26: @8[6]: _53 = &amp;(*_72)
77:9-77:26: @8[7]: _52 = &amp;(*_53)
77:9-77:26: @8[8]: _51 = move _52 as &amp;[&amp;str] (Pointer(Unsize))
77:9-77:26: @8[17]: _61 = &amp;(*_43)
77:9-77:26: @8[18]: _60 = &amp;_61
77:9-77:26: @8[21]: _63 = &amp;(*_44)
77:9-77:26: @8[22]: _62 = &amp;_63
77:9-77:26: @8[23]: _59 = (move _60, move _62)
77:9-77:26: @8[26]: FakeRead(ForMatchedPlace, _59)
77:9-77:26: @8[28]: _64 = (_59.0: &amp;&amp;i32)
77:9-77:26: @8[30]: _65 = (_59.1: &amp;&amp;i32)
77:9-77:26: @8[33]: _67 = &amp;(*_64)
77:9-77:26: @8[35]: _68 = &lt;&amp;i32 as std::fmt::Debug&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r &amp;i32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
77:9-77:26: @8.Call: _66 = std::fmt::ArgumentV1::new::&lt;&amp;i32&gt;(move _67, move _68) -&gt; [return: bb10, unwind: bb14]
77:9-77:26: @10[4]: _70 = &amp;(*_65)
77:9-77:26: @10[6]: _71 = &lt;&amp;i32 as std::fmt::Debug&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r &amp;i32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
77:9-77:26: @10.Call: _69 = std::fmt::ArgumentV1::new::&lt;&amp;i32&gt;(move _70, move _71) -&gt; [return: bb11, unwind: bb14]
77:9-77:26: @11[2]: _58 = [move _66, move _69]
77:9-77:26: @11[7]: _57 = &amp;_58
77:9-77:26: @11[8]: _56 = &amp;(*_57)
77:9-77:26: @11[9]: _55 = move _56 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
77:9-77:26: @11.Call: _50 = std::fmt::Arguments::new_v1(move _51, move _55) -&gt; [return: bb12, unwind: bb14]
77:9-77:26: @12.Call: core::panicking::panic_fmt(move _50) -&gt; bb14"><span class="annotation">@8,10,11,12⦊</span>assert_eq!(1, 2);<span class="annotation">⦉@8,10,11,12</span></span><span><span class="code even" style="--layer: 1" title="77:9-77:26: @9[0]: _37 = const ()"><span class="annotation">⦉@9</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> </span><span><span class="code even" style="--layer: 1" title="77:9-77:26: @6[0]: _23 = const ()"><span class="annotation">@6⦊</span></span></span><span class="code even" style="--layer: 2" title="77:9-77:26: @5[1]: _36 = core::panicking::AssertKind::Eq
77:9-77:26: @5[2]: FakeRead(ForLet, _36)
77:9-77:26: @5[5]: _38 = move _36
77:9-77:26: @5[8]: _40 = &amp;(*_29)
77:9-77:26: @5[9]: _39 = &amp;(*_40)
77:9-77:26: @5[12]: _42 = &amp;(*_30)
77:9-77:26: @5[13]: _41 = &amp;(*_42)
77:9-77:26: @5[15]: _43 = std::option::Option::&lt;std::fmt::Arguments&gt;::None
77:9-77:26: @5.Call: core::panicking::assert_failed::&lt;i32, i32&gt;(move _38, move _39, move _41, move _43) -&gt; bb8"><span class="annotation">@5⦊</span>assert_eq!(1, 2);<span class="annotation">⦉@5</span></span><span><span class="code even" style="--layer: 1" title="77:9-77:26: @6[0]: _23 = const ()"><span class="annotation">⦉@6</span></span></span><span class="code" style="--layer: 0"></span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code odd" style="--layer: 1" title="79:2-79:2: @13.Return: return"><span class="annotation">@13</span><span class="annotation">⦉@13</span></span></span></span></div>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code odd" style="--layer: 1" title="79:2-79:2: @7.Return: return"><span class="annotation">@7⦊</span><span class="annotation">⦉@7</span></span></span></span></div>
</body>
</html>

View File

@ -71,103 +71,43 @@ For revisions in Pull Requests (PR):
<body>
<div class="code" style="counter-reset: line 1"><span class="line"><span><span class="code even" style="--layer: 1"><span class="annotation">@0⦊</span>pub fn fn_run_in_doctests(conditional: usize) <span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0">{</span></span>
<span class="line"><span class="code" style="--layer: 0"> match </span><span><span class="code even" style="--layer: 1" title="3:11-3:22: @0[0]: FakeRead(ForMatchedPlace, _1)"><span class="annotation">@0⦊</span>conditional<span class="annotation">⦉@0</span></span></span><span class="code" style="--layer: 0"> {</span></span>
<span class="line"><span class="code" style="--layer: 0"> 1 =&gt; </span><span><span class="code odd" style="--layer: 1" title="4:14-4:30: @7[0]: _0 = const ()"><span class="annotation">@7⦊</span></span></span><span class="code even" style="--layer: 2" title="4:14-4:30: @6[5]: _138 = const fn_run_in_doctests::promoted[0]
4:14-4:30: @6[6]: _17 = &amp;(*_138)
4:14-4:30: @6[7]: _16 = &amp;(*_17)
4:14-4:30: @6[8]: _15 = move _16 as &amp;[&amp;str] (Pointer(Unsize))
4:14-4:30: @6[17]: _25 = &amp;(*_7)
4:14-4:30: @6[18]: _24 = &amp;_25
4:14-4:30: @6[21]: _27 = &amp;(*_8)
4:14-4:30: @6[22]: _26 = &amp;_27
4:14-4:30: @6[23]: _23 = (move _24, move _26)
4:14-4:30: @6[26]: FakeRead(ForMatchedPlace, _23)
4:14-4:30: @6[28]: _28 = (_23.0: &amp;&amp;i32)
4:14-4:30: @6[30]: _29 = (_23.1: &amp;&amp;i32)
4:14-4:30: @6[33]: _31 = &amp;(*_28)
4:14-4:30: @6[35]: _32 = &lt;&amp;i32 as std::fmt::Debug&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r &amp;i32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
4:14-4:30: @6.Call: _30 = std::fmt::ArgumentV1::new::&lt;&amp;i32&gt;(move _31, move _32) -&gt; [return: bb8, unwind: bb29]
4:14-4:30: @8[4]: _34 = &amp;(*_29)
4:14-4:30: @8[6]: _35 = &lt;&amp;i32 as std::fmt::Debug&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r &amp;i32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
4:14-4:30: @8.Call: _33 = std::fmt::ArgumentV1::new::&lt;&amp;i32&gt;(move _34, move _35) -&gt; [return: bb9, unwind: bb29]
4:14-4:30: @9[2]: _22 = [move _30, move _33]
4:14-4:30: @9[7]: _21 = &amp;_22
4:14-4:30: @9[8]: _20 = &amp;(*_21)
4:14-4:30: @9[9]: _19 = move _20 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
4:14-4:30: @9.Call: _14 = std::fmt::Arguments::new_v1(move _15, move _19) -&gt; [return: bb10, unwind: bb29]
4:14-4:30: @10.Call: core::panicking::panic_fmt(move _14) -&gt; bb29"><span class="annotation">@6,8,9,10⦊</span>assert_eq!(1, 1)<span class="annotation">⦉@6,8,9,10</span></span><span><span class="code odd" style="--layer: 1" title="4:14-4:30: @7[0]: _0 = const ()"><span class="annotation">⦉@7</span></span></span><span class="code" style="--layer: 0">, // this is run,</span></span>
<span class="line"><span class="code" style="--layer: 0"> 2 =&gt; </span><span><span class="code even" style="--layer: 1" title="5:14-5:30: @13[0]: _0 = const ()"><span class="annotation">@13⦊</span></span></span><span class="code even" style="--layer: 2" title="5:14-5:30: @12[5]: _141 = const fn_run_in_doctests::promoted[3]
5:14-5:30: @12[6]: _51 = &amp;(*_141)
5:14-5:30: @12[7]: _50 = &amp;(*_51)
5:14-5:30: @12[8]: _49 = move _50 as &amp;[&amp;str] (Pointer(Unsize))
5:14-5:30: @12[17]: _59 = &amp;(*_41)
5:14-5:30: @12[18]: _58 = &amp;_59
5:14-5:30: @12[21]: _61 = &amp;(*_42)
5:14-5:30: @12[22]: _60 = &amp;_61
5:14-5:30: @12[23]: _57 = (move _58, move _60)
5:14-5:30: @12[26]: FakeRead(ForMatchedPlace, _57)
5:14-5:30: @12[28]: _62 = (_57.0: &amp;&amp;i32)
5:14-5:30: @12[30]: _63 = (_57.1: &amp;&amp;i32)
5:14-5:30: @12[33]: _65 = &amp;(*_62)
5:14-5:30: @12[35]: _66 = &lt;&amp;i32 as std::fmt::Debug&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r &amp;i32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
5:14-5:30: @12.Call: _64 = std::fmt::ArgumentV1::new::&lt;&amp;i32&gt;(move _65, move _66) -&gt; [return: bb14, unwind: bb29]
5:14-5:30: @14[4]: _68 = &amp;(*_63)
5:14-5:30: @14[6]: _69 = &lt;&amp;i32 as std::fmt::Debug&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r &amp;i32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
5:14-5:30: @14.Call: _67 = std::fmt::ArgumentV1::new::&lt;&amp;i32&gt;(move _68, move _69) -&gt; [return: bb15, unwind: bb29]
5:14-5:30: @15[2]: _56 = [move _64, move _67]
5:14-5:30: @15[7]: _55 = &amp;_56
5:14-5:30: @15[8]: _54 = &amp;(*_55)
5:14-5:30: @15[9]: _53 = move _54 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
5:14-5:30: @15.Call: _48 = std::fmt::Arguments::new_v1(move _49, move _53) -&gt; [return: bb16, unwind: bb29]
5:14-5:30: @16.Call: core::panicking::panic_fmt(move _48) -&gt; bb29"><span class="annotation">@12,14,15,16⦊</span>assert_eq!(1, 1)<span class="annotation">⦉@12,14,15,16</span></span><span><span class="code even" style="--layer: 1" title="5:14-5:30: @13[0]: _0 = const ()"><span class="annotation">⦉@13</span></span></span><span class="code" style="--layer: 0">, // this,</span></span>
<span class="line"><span class="code" style="--layer: 0"> 3 =&gt; </span><span><span class="code odd" style="--layer: 1" title="6:14-6:30: @19[0]: _0 = const ()"><span class="annotation">@19⦊</span></span></span><span class="code even" style="--layer: 2" title="6:14-6:30: @18[5]: _144 = const fn_run_in_doctests::promoted[6]
6:14-6:30: @18[6]: _85 = &amp;(*_144)
6:14-6:30: @18[7]: _84 = &amp;(*_85)
6:14-6:30: @18[8]: _83 = move _84 as &amp;[&amp;str] (Pointer(Unsize))
6:14-6:30: @18[17]: _93 = &amp;(*_75)
6:14-6:30: @18[18]: _92 = &amp;_93
6:14-6:30: @18[21]: _95 = &amp;(*_76)
6:14-6:30: @18[22]: _94 = &amp;_95
6:14-6:30: @18[23]: _91 = (move _92, move _94)
6:14-6:30: @18[26]: FakeRead(ForMatchedPlace, _91)
6:14-6:30: @18[28]: _96 = (_91.0: &amp;&amp;i32)
6:14-6:30: @18[30]: _97 = (_91.1: &amp;&amp;i32)
6:14-6:30: @18[33]: _99 = &amp;(*_96)
6:14-6:30: @18[35]: _100 = &lt;&amp;i32 as std::fmt::Debug&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r &amp;i32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
6:14-6:30: @18.Call: _98 = std::fmt::ArgumentV1::new::&lt;&amp;i32&gt;(move _99, move _100) -&gt; [return: bb20, unwind: bb29]
6:14-6:30: @20[4]: _102 = &amp;(*_97)
6:14-6:30: @20[6]: _103 = &lt;&amp;i32 as std::fmt::Debug&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r &amp;i32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
6:14-6:30: @20.Call: _101 = std::fmt::ArgumentV1::new::&lt;&amp;i32&gt;(move _102, move _103) -&gt; [return: bb21, unwind: bb29]
6:14-6:30: @21[2]: _90 = [move _98, move _101]
6:14-6:30: @21[7]: _89 = &amp;_90
6:14-6:30: @21[8]: _88 = &amp;(*_89)
6:14-6:30: @21[9]: _87 = move _88 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
6:14-6:30: @21.Call: _82 = std::fmt::Arguments::new_v1(move _83, move _87) -&gt; [return: bb22, unwind: bb29]
6:14-6:30: @22.Call: core::panicking::panic_fmt(move _82) -&gt; bb29"><span class="annotation">@18,20,21,22⦊</span>assert_eq!(1, 1)<span class="annotation">⦉@18,20,21,22</span></span><span><span class="code odd" style="--layer: 1" title="6:14-6:30: @19[0]: _0 = const ()"><span class="annotation">⦉@19</span></span></span><span class="code" style="--layer: 0">, // and this too</span></span>
<span class="line"><span class="code" style="--layer: 0"> _ =&gt; </span><span><span class="code even" style="--layer: 1" title="7:14-7:30: @24[0]: _0 = const ()"><span class="annotation">@24⦊</span></span></span><span class="code even" style="--layer: 2" title="7:14-7:30: @23[5]: _147 = const fn_run_in_doctests::promoted[9]
7:14-7:30: @23[6]: _119 = &amp;(*_147)
7:14-7:30: @23[7]: _118 = &amp;(*_119)
7:14-7:30: @23[8]: _117 = move _118 as &amp;[&amp;str] (Pointer(Unsize))
7:14-7:30: @23[17]: _127 = &amp;(*_109)
7:14-7:30: @23[18]: _126 = &amp;_127
7:14-7:30: @23[21]: _129 = &amp;(*_110)
7:14-7:30: @23[22]: _128 = &amp;_129
7:14-7:30: @23[23]: _125 = (move _126, move _128)
7:14-7:30: @23[26]: FakeRead(ForMatchedPlace, _125)
7:14-7:30: @23[28]: _130 = (_125.0: &amp;&amp;i32)
7:14-7:30: @23[30]: _131 = (_125.1: &amp;&amp;i32)
7:14-7:30: @23[33]: _133 = &amp;(*_130)
7:14-7:30: @23[35]: _134 = &lt;&amp;i32 as std::fmt::Debug&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r &amp;i32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
7:14-7:30: @23.Call: _132 = std::fmt::ArgumentV1::new::&lt;&amp;i32&gt;(move _133, move _134) -&gt; [return: bb25, unwind: bb29]
7:14-7:30: @25[4]: _136 = &amp;(*_131)
7:14-7:30: @25[6]: _137 = &lt;&amp;i32 as std::fmt::Debug&gt;::fmt as for&lt;&#39;r, &#39;s, &#39;t0&gt; fn(&amp;&#39;r &amp;i32, &amp;&#39;s mut std::fmt::Formatter&lt;&#39;t0&gt;) -&gt; std::result::Result&lt;(), std::fmt::Error&gt; (Pointer(ReifyFnPointer))
7:14-7:30: @25.Call: _135 = std::fmt::ArgumentV1::new::&lt;&amp;i32&gt;(move _136, move _137) -&gt; [return: bb26, unwind: bb29]
7:14-7:30: @26[2]: _124 = [move _132, move _135]
7:14-7:30: @26[7]: _123 = &amp;_124
7:14-7:30: @26[8]: _122 = &amp;(*_123)
7:14-7:30: @26[9]: _121 = move _122 as &amp;[std::fmt::ArgumentV1] (Pointer(Unsize))
7:14-7:30: @26.Call: _116 = std::fmt::Arguments::new_v1(move _117, move _121) -&gt; [return: bb27, unwind: bb29]
7:14-7:30: @27.Call: core::panicking::panic_fmt(move _116) -&gt; bb29"><span class="annotation">@23,25,26,27⦊</span>assert_eq!(1, 2)<span class="annotation">⦉@23,25,26,27</span></span><span><span class="code even" style="--layer: 1" title="7:14-7:30: @24[0]: _0 = const ()"><span class="annotation">⦉@24</span></span></span><span class="code" style="--layer: 0">, // however this is not</span></span>
<span class="line"><span class="code" style="--layer: 0"> 1 =&gt; </span><span><span class="code odd" style="--layer: 1" title="4:14-4:30: @7[0]: _0 = const ()"><span class="annotation">@7⦊</span></span></span><span class="code even" style="--layer: 2" title="4:14-4:30: @6[1]: _14 = core::panicking::AssertKind::Eq
4:14-4:30: @6[2]: FakeRead(ForLet, _14)
4:14-4:30: @6[5]: _16 = move _14
4:14-4:30: @6[8]: _18 = &amp;(*_7)
4:14-4:30: @6[9]: _17 = &amp;(*_18)
4:14-4:30: @6[12]: _20 = &amp;(*_8)
4:14-4:30: @6[13]: _19 = &amp;(*_20)
4:14-4:30: @6[15]: _21 = std::option::Option::&lt;std::fmt::Arguments&gt;::None
4:14-4:30: @6.Call: core::panicking::assert_failed::&lt;i32, i32&gt;(move _16, move _17, move _19, move _21) -&gt; bb17"><span class="annotation">@6⦊</span>assert_eq!(1, 1)<span class="annotation">⦉@6</span></span><span><span class="code odd" style="--layer: 1" title="4:14-4:30: @7[0]: _0 = const ()"><span class="annotation">⦉@7</span></span></span><span class="code" style="--layer: 0">, // this is run,</span></span>
<span class="line"><span class="code" style="--layer: 0"> 2 =&gt; </span><span><span class="code even" style="--layer: 1" title="5:14-5:30: @10[0]: _0 = const ()"><span class="annotation">@10⦊</span></span></span><span class="code even" style="--layer: 2" title="5:14-5:30: @9[1]: _34 = core::panicking::AssertKind::Eq
5:14-5:30: @9[2]: FakeRead(ForLet, _34)
5:14-5:30: @9[5]: _36 = move _34
5:14-5:30: @9[8]: _38 = &amp;(*_27)
5:14-5:30: @9[9]: _37 = &amp;(*_38)
5:14-5:30: @9[12]: _40 = &amp;(*_28)
5:14-5:30: @9[13]: _39 = &amp;(*_40)
5:14-5:30: @9[15]: _41 = std::option::Option::&lt;std::fmt::Arguments&gt;::None
5:14-5:30: @9.Call: core::panicking::assert_failed::&lt;i32, i32&gt;(move _36, move _37, move _39, move _41) -&gt; bb17"><span class="annotation">@9⦊</span>assert_eq!(1, 1)<span class="annotation">⦉@9</span></span><span><span class="code even" style="--layer: 1" title="5:14-5:30: @10[0]: _0 = const ()"><span class="annotation">⦉@10</span></span></span><span class="code" style="--layer: 0">, // this,</span></span>
<span class="line"><span class="code" style="--layer: 0"> 3 =&gt; </span><span><span class="code odd" style="--layer: 1" title="6:14-6:30: @13[0]: _0 = const ()"><span class="annotation">@13⦊</span></span></span><span class="code even" style="--layer: 2" title="6:14-6:30: @12[1]: _54 = core::panicking::AssertKind::Eq
6:14-6:30: @12[2]: FakeRead(ForLet, _54)
6:14-6:30: @12[5]: _56 = move _54
6:14-6:30: @12[8]: _58 = &amp;(*_47)
6:14-6:30: @12[9]: _57 = &amp;(*_58)
6:14-6:30: @12[12]: _60 = &amp;(*_48)
6:14-6:30: @12[13]: _59 = &amp;(*_60)
6:14-6:30: @12[15]: _61 = std::option::Option::&lt;std::fmt::Arguments&gt;::None
6:14-6:30: @12.Call: core::panicking::assert_failed::&lt;i32, i32&gt;(move _56, move _57, move _59, move _61) -&gt; bb17"><span class="annotation">@12⦊</span>assert_eq!(1, 1)<span class="annotation">⦉@12</span></span><span><span class="code odd" style="--layer: 1" title="6:14-6:30: @13[0]: _0 = const ()"><span class="annotation">⦉@13</span></span></span><span class="code" style="--layer: 0">, // and this too</span></span>
<span class="line"><span class="code" style="--layer: 0"> _ =&gt; </span><span><span class="code even" style="--layer: 1" title="7:14-7:30: @15[0]: _0 = const ()"><span class="annotation">@15⦊</span></span></span><span class="code even" style="--layer: 2" title="7:14-7:30: @14[1]: _74 = core::panicking::AssertKind::Eq
7:14-7:30: @14[2]: FakeRead(ForLet, _74)
7:14-7:30: @14[5]: _76 = move _74
7:14-7:30: @14[8]: _78 = &amp;(*_67)
7:14-7:30: @14[9]: _77 = &amp;(*_78)
7:14-7:30: @14[12]: _80 = &amp;(*_68)
7:14-7:30: @14[13]: _79 = &amp;(*_80)
7:14-7:30: @14[15]: _81 = std::option::Option::&lt;std::fmt::Arguments&gt;::None
7:14-7:30: @14.Call: core::panicking::assert_failed::&lt;i32, i32&gt;(move _76, move _77, move _79, move _81) -&gt; bb17"><span class="annotation">@14⦊</span>assert_eq!(1, 2)<span class="annotation">⦉@14</span></span><span><span class="code even" style="--layer: 1" title="7:14-7:30: @15[0]: _0 = const ()"><span class="annotation">⦉@15</span></span></span><span class="code" style="--layer: 0">, // however this is not</span></span>
<span class="line"><span class="code" style="--layer: 0"> }</span></span>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code odd" style="--layer: 1" title="9:2-9:2: @28.Return: return"><span class="annotation">@28</span><span class="annotation">⦉@28</span></span></span></span></div>
<span class="line"><span class="code" style="--layer: 0">}</span><span><span class="code odd" style="--layer: 1" title="9:2-9:2: @16.Return: return"><span class="annotation">@16⦊</span><span class="annotation">⦉@16</span></span></span></span></div>
</body>
</html>

View File

@ -32,7 +32,7 @@ note: ...which requires const-evaluating + checking `Tr::B`...
LL | const B: u8 = Self::A;
| ^^^^^^^^^^^^^^^^^^^^^^
= note: ...which again requires normalizing `<() as Tr>::A`, completing the cycle
note: cycle used when const-evaluating + checking `main::promoted[2]`
note: cycle used when const-evaluating + checking `main::promoted[1]`
--> $DIR/defaults-cyclic-fail.rs:14:1
|
LL | fn main() {

View File

@ -14,10 +14,13 @@ error[E0277]: `for<'r> fn(&'r i32) -> &'r i32 {foo}` doesn't implement `Debug`
|
LL | assert_eq!(foo, y);
| ^^^^^^^^^^^^^^^^^^^ `for<'r> fn(&'r i32) -> &'r i32 {foo}` cannot be formatted using `{:?}` because it doesn't implement `Debug`
|
::: $SRC_DIR/core/src/panicking.rs:LL:COL
|
LL | T: fmt::Debug + ?Sized,
| ---------- required by this bound in `core::panicking::assert_failed`
|
= help: the trait `Debug` is not implemented for `for<'r> fn(&'r i32) -> &'r i32 {foo}`
= note: required because of the requirements on the impl of `Debug` for `&for<'r> fn(&'r i32) -> &'r i32 {foo}`
= note: required by `std::fmt::Debug::fmt`
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 2 previous errors

View File

@ -2,10 +2,7 @@ error[E0317]: `if` may be missing an `else` clause
--> $DIR/issue-50577.rs:3:16
|
LL | Drop = assert_eq!(1, 1),
| ^^^^^^^^^^^^^^^^
| |
| expected `()`, found `isize`
| found here
| ^^^^^^^^^^^^^^^^ expected `()`, found `isize`
|
= note: `if` expressions without `else` evaluate to `()`
= help: consider adding an `else` block that evaluates to the expected type

View File

@ -30,5 +30,4 @@ fn main() {
assert_eq!(Foo::Bar, i);
//~^ ERROR binary operation `==` cannot be applied to type `fn(usize) -> Foo {Foo::Bar}` [E0369]
//~| ERROR `fn(usize) -> Foo {Foo::Bar}` doesn't implement `Debug` [E0277]
//~| ERROR `fn(usize) -> Foo {Foo::Bar}` doesn't implement `Debug` [E0277]
}

View File

@ -84,24 +84,16 @@ error[E0277]: `fn(usize) -> Foo {Foo::Bar}` doesn't implement `Debug`
|
LL | assert_eq!(Foo::Bar, i);
| ^^^^^^^^^^^^^^^^^^^^^^^^ `fn(usize) -> Foo {Foo::Bar}` cannot be formatted using `{:?}` because it doesn't implement `Debug`
|
::: $SRC_DIR/core/src/panicking.rs:LL:COL
|
LL | T: fmt::Debug + ?Sized,
| ---------- required by this bound in `core::panicking::assert_failed`
|
= help: the trait `Debug` is not implemented for `fn(usize) -> Foo {Foo::Bar}`
= note: required because of the requirements on the impl of `Debug` for `&fn(usize) -> Foo {Foo::Bar}`
= note: required by `std::fmt::Debug::fmt`
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: `fn(usize) -> Foo {Foo::Bar}` doesn't implement `Debug`
--> $DIR/issue-59488.rs:30:5
|
LL | assert_eq!(Foo::Bar, i);
| ^^^^^^^^^^^^^^^^^^^^^^^^ `fn(usize) -> Foo {Foo::Bar}` cannot be formatted using `{:?}` because it doesn't implement `Debug`
|
= help: the trait `Debug` is not implemented for `fn(usize) -> Foo {Foo::Bar}`
= note: required because of the requirements on the impl of `Debug` for `&fn(usize) -> Foo {Foo::Bar}`
= note: required by `std::fmt::Debug::fmt`
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 10 previous errors
error: aborting due to 9 previous errors
Some errors have detailed explanations: E0277, E0308, E0369.
For more information about an error, try `rustc --explain E0277`.

View File

@ -28,11 +28,14 @@ LL | fn a() -> i32 {
...
LL | assert_eq!(a, 0);
| ^^^^^^^^^^^^^^^^^ `fn() -> i32 {a}` cannot be formatted using `{:?}` because it doesn't implement `Debug`
|
::: $SRC_DIR/core/src/panicking.rs:LL:COL
|
LL | T: fmt::Debug + ?Sized,
| ---------- required by this bound in `core::panicking::assert_failed`
|
= help: the trait `Debug` is not implemented for `fn() -> i32 {a}`
= help: use parentheses to call the function: `a()`
= note: required because of the requirements on the impl of `Debug` for `&fn() -> i32 {a}`
= note: required by `std::fmt::Debug::fmt`
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 3 previous errors