// Test that we don't ICE when trying to dump MIR for unusual item types and
// that we don't create filenames containing `<` and `>`
// ignore-tidy-linelength

struct A;

impl A {
    const ASSOCIATED_CONSTANT: i32 = 2;
}

// See #59021
enum Test {
    X(usize),
    Y { a: usize },
}

enum E {
    V = 5,
}

fn main() {
    let f = Test::X as fn(usize) -> Test;
    let v = Vec::<i32>::new();
}

// END RUST SOURCE

// START rustc.{{impl}}-ASSOCIATED_CONSTANT.mir_map.0.mir
// bb0: {
//     _0 = const 2i32;
//     return;
// }
// bb1 (cleanup): {
//     resume;
// }
// END rustc.{{impl}}-ASSOCIATED_CONSTANT.mir_map.0.mir

// START rustc.E-V-{{constant}}.mir_map.0.mir
// bb0: {
//     _0 = const 5isize;
//     return;
// }
// bb1 (cleanup): {
//     resume;
// }
// END rustc.E-V-{{constant}}.mir_map.0.mir

// START rustc.ptr-drop_in_place.std__vec__Vec_i32_.AddMovesForPackedDrops.before.mir
//     bb0: {
//     goto -> bb7;
// }
// bb1: {
//     return;
// }
// bb2 (cleanup): {
//     resume;
// }
// bb3: {
//     goto -> bb1;
// }
// bb4 (cleanup): {
//     goto -> bb2;
// }
// bb5 (cleanup): {
//     drop(((*_1).0: alloc::raw_vec::RawVec<i32>)) -> bb4;
// }
// bb6: {
//     drop(((*_1).0: alloc::raw_vec::RawVec<i32>)) -> [return: bb3, unwind: bb4];
// }
// bb7: {
//     _2 = &mut (*_1);
//     _3 = const <std::vec::Vec<i32> as std::ops::Drop>::drop(move _2) -> [return: bb6, unwind: bb5];
// }
// END rustc.ptr-drop_in_place.std__vec__Vec_i32_.AddMovesForPackedDrops.before.mir

// START rustc.Test-X-{{constructor}}.mir_map.0.mir
// fn Test::X(_1: usize) -> Test {
//     let mut _0: Test;
//
//     bb0: {
//         ((_0 as X).0: usize) = move _1;
//         discriminant(_0) = 0;
//         return;
//     }
// }
// END rustc.Test-X-{{constructor}}.mir_map.0.mir
