rustc_hir/
weak_lang_items.rs

1//! Validity checking for weak lang items
2
3use rustc_span::{Symbol, sym};
4
5use crate::LangItem;
6
7macro_rules! weak_lang_items {
8    ($($item:ident, $sym:ident;)*) => {
9        pub static WEAK_LANG_ITEMS: &[LangItem] = &[$(LangItem::$item,)*];
10
11        impl LangItem {
12            pub fn is_weak(self) -> bool {
13                matches!(self, $(LangItem::$item)|*)
14            }
15
16            pub fn link_name(self) -> Option<Symbol> {
17                match self {
18                    $( LangItem::$item => Some(sym::$sym),)*
19                    _ => None,
20                }
21            }
22        }
23    }
24}
25
26weak_lang_items! {
27    PanicImpl,          rust_begin_unwind;
28    EhPersonality,      rust_eh_personality;
29    EhCatchTypeinfo,    rust_eh_catch_typeinfo;
30}