aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/util/rust-hir-map.cc
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-05-17 10:11:04 +0000
committerGitHub <noreply@github.com>2022-05-17 10:11:04 +0000
commit8cad07cfd2244ad9a40027a4306b81b4553a4797 (patch)
treece267318444308626518420adf10b563c2bad96c /gcc/rust/util/rust-hir-map.cc
parente4213b9568ae8cb8a4e31326e0e78c79db0a99cc (diff)
parent48fc2df91b07709f41ab80499a661ac9f12f3be3 (diff)
downloadgcc-8cad07cfd2244ad9a40027a4306b81b4553a4797.zip
gcc-8cad07cfd2244ad9a40027a4306b81b4553a4797.tar.gz
gcc-8cad07cfd2244ad9a40027a4306b81b4553a4797.tar.bz2
Merge #1246
1246: Report simple privacy violations r=CohenArthur a=CohenArthur This adds a base visitor for reporting basic privacy violations. For now, only function calls are implemented. 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.cc26
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