]> git.lizzy.rs Git - rust.git/blob - src/librustc_hir/fake_lang_items.rs
Rollup merge of #74762 - ssomers:btree_no_root_in_remove_kv_tracking, r=Mark-Simulacrum
[rust.git] / src / librustc_hir / fake_lang_items.rs
1 //! Validity checking for fake lang items
2
3 use crate::def_id::DefId;
4 use crate::{lang_items, LangItem, LanguageItems};
5
6 use rustc_data_structures::fx::FxHashMap;
7 use rustc_span::symbol::{sym, Symbol};
8
9 use lazy_static::lazy_static;
10
11 macro_rules! fake_lang_items {
12     ($($item:ident, $name:ident, $method:ident;)*) => (
13
14 lazy_static! {
15     pub static ref FAKE_ITEMS_REFS: FxHashMap<Symbol, LangItem> = {
16         let mut map = FxHashMap::default();
17         $(map.insert(sym::$name, lang_items::$item);)*
18         map
19     };
20 }
21
22 impl LanguageItems {
23     pub fn is_fake_lang_item(&self, item_def_id: DefId) -> bool {
24         let did = Some(item_def_id);
25
26         $(self.$method() == did)||*
27     }
28 }
29
30 ) }
31
32 fake_lang_items! {
33 //  Variant name,                      Symbol,                    Method name,
34     CountCodeRegionFnLangItem,         count_code_region,         count_code_region_fn;
35     CoverageCounterAddFnLangItem,      coverage_counter_add,      coverage_counter_add_fn;
36     CoverageCounterSubtractFnLangItem, coverage_counter_subtract, coverage_counter_subtract_fn;
37 }