diff options
Diffstat (limited to 'gcc/rust/util/rust-hir-map.cc')
-rw-r--r-- | gcc/rust/util/rust-hir-map.cc | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc index 66d3e41..934331b 100644 --- a/gcc/rust/util/rust-hir-map.cc +++ b/gcc/rust/util/rust-hir-map.cc @@ -832,21 +832,41 @@ Mappings::lookup_macro_def (NodeId id, AST::MacroRulesDefinition **def) } void -Mappings::insert_visibility (DefId id, Privacy::ModuleVisibility visibility) +Mappings::insert_visibility (NodeId id, Privacy::ModuleVisibility visibility) { visibility_map.insert ({id, visibility}); } bool -Mappings::lookup_visibility (DefId id, Privacy::ModuleVisibility *def) +Mappings::lookup_visibility (NodeId id, Privacy::ModuleVisibility &def) { auto it = visibility_map.find (id); if (it == visibility_map.end ()) return false; - *def = it->second; + def = it->second; return true; } +void +Mappings::insert_module_child (NodeId module, NodeId child) +{ + auto it = module_child_map.find (module); + if (it == module_child_map.end ()) + module_child_map.insert ({module, {child}}); + else + it->second.emplace_back (child); +} + +Optional<std::vector<NodeId> &> +Mappings::lookup_module_children (NodeId module) +{ + auto it = module_child_map.find (module); + if (it == module_child_map.end ()) + return Optional<std::vector<NodeId> &>::none (); + + return Optional<std::vector<NodeId> &>::some (it->second); +} + } // namespace Analysis } // namespace Rust |