//@ compile-flags:-Zprint-mono-items=lazy // rust-lang/rust#90405 // Ensure implicit panic calls are collected #![feature(lang_items)] #![feature(no_core)] #![crate_type = "lib"] #![no_core] #![no_std] #[lang = "panic_location"] struct Location<'a> { _file: &'a str, _line: u32, _col: u32, } #[lang = "panic_const_div_by_zero"] #[inline] #[track_caller] fn panic_div_zero() -> ! { loop {} } #[lang = "panic_const_div_overflow"] #[inline] #[track_caller] fn panic_div_overflow() -> ! { loop {} } #[lang = "sized"] trait Sized {} #[lang = "copy"] trait Copy {} #[lang = "freeze"] trait Freeze {} impl Copy for i32 {} #[lang = "div"] trait Div { type Output; fn div(self, rhs: Rhs) -> Self::Output; } impl Div for i32 { type Output = i32; fn div(self, rhs: i32) -> i32 { self / rhs } } #[allow(unconditional_panic)] pub fn foo() { // This implicitly generates a panic call. let _ = 1 / 0; } //~ MONO_ITEM fn foo //~ MONO_ITEM fn ::div //~ MONO_ITEM fn panic_div_zero //~ MONO_ITEM fn panic_div_overflow