| //! Validity checking for weak lang items |
| |
| use rustc_span::{Symbol, sym}; |
| |
| use crate::LangItem; |
| |
| macro_rules! weak_lang_items { |
| ($($item:ident, $sym:ident;)*) => { |
| pub static WEAK_LANG_ITEMS: &[LangItem] = &[$(LangItem::$item,)*]; |
| |
| impl LangItem { |
| pub fn is_weak(self) -> bool { |
| matches!(self, $(LangItem::$item)|*) |
| } |
| |
| pub fn link_name(self) -> Option<Symbol> { |
| match self { |
| $( LangItem::$item => Some(sym::$sym),)* |
| _ => None, |
| } |
| } |
| } |
| } |
| } |
| |
| weak_lang_items! { |
| PanicImpl, rust_begin_unwind; |
| EhPersonality, rust_eh_personality; |
| EhCatchTypeinfo, rust_eh_catch_typeinfo; |
| } |