diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-07-29 16:27:22 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-29 16:27:22 +0000 |
commit | 8809ee8c6a5621e830f3cfe66c381f986e63c7f2 (patch) | |
tree | e2faec377641b1cadb98f4941339a6d6c38a4c17 /gcc/rust/util/rust-hir-map.cc | |
parent | 2d824b796cde571d270f4c20af8183dbd93614d5 (diff) | |
parent | f742538d13375aa90ccaa787b06e07835bba5887 (diff) | |
download | gcc-8809ee8c6a5621e830f3cfe66c381f986e63c7f2.zip gcc-8809ee8c6a5621e830f3cfe66c381f986e63c7f2.tar.gz gcc-8809ee8c6a5621e830f3cfe66c381f986e63c7f2.tar.bz2 |
Merge #1427
1427: unsafe: Check for unsafe function/method calls r=CohenArthur a=CohenArthur
Addresses #1411
Co-authored-by: Arthur Cohen <arthur.cohen@embecosm.com>
Diffstat (limited to 'gcc/rust/util/rust-hir-map.cc')
-rw-r--r-- | gcc/rust/util/rust-hir-map.cc | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc index c7bf182..6a6deeb 100644 --- a/gcc/rust/util/rust-hir-map.cc +++ b/gcc/rust/util/rust-hir-map.cc @@ -371,23 +371,45 @@ Mappings::lookup_hir_trait_item (HirId id) } void -Mappings::insert_hir_extern_item (HIR::ExternalItem *item) +Mappings::insert_hir_extern_block (HIR::ExternBlock *block) +{ + auto id = block->get_mappings ().get_hirid (); + rust_assert (lookup_hir_extern_block (id) == nullptr); + + hirExternBlockMappings[id] = block; + insert_node_to_hir (block->get_mappings ().get_nodeid (), id); +} + +HIR::ExternBlock * +Mappings::lookup_hir_extern_block (HirId id) +{ + auto it = hirExternBlockMappings.find (id); + if (it == hirExternBlockMappings.end ()) + return nullptr; + + return it->second; +} + +void +Mappings::insert_hir_extern_item (HIR::ExternalItem *item, HirId parent_block) { auto id = item->get_mappings ().get_hirid (); - rust_assert (lookup_hir_extern_item (id) == nullptr); + rust_assert (lookup_hir_extern_item (id, nullptr) == nullptr); - hirExternItemMappings[id] = item; + hirExternItemMappings[id] = {item, parent_block}; insert_node_to_hir (item->get_mappings ().get_nodeid (), id); } HIR::ExternalItem * -Mappings::lookup_hir_extern_item (HirId id) +Mappings::lookup_hir_extern_item (HirId id, HirId *parent_block) { auto it = hirExternItemMappings.find (id); if (it == hirExternItemMappings.end ()) return nullptr; - return it->second; + *parent_block = it->second.second; + + return it->second.first; } void |