privacy: Simplify update_macro_reachable
Address a FIXME in code.
This commit is contained in:
parent
dd6126ef56
commit
55d08f50ea
@ -531,42 +531,19 @@ fn update_macro_reachable(
|
|||||||
macro_ev: EffectiveVisibility,
|
macro_ev: EffectiveVisibility,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
if self.macro_reachable.insert((module_def_id, defining_mod)) {
|
if self.macro_reachable.insert((module_def_id, defining_mod)) {
|
||||||
self.update_macro_reachable_mod(module_def_id, defining_mod, macro_ev);
|
|
||||||
true
|
|
||||||
} else {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn update_macro_reachable_mod(
|
|
||||||
&mut self,
|
|
||||||
module_def_id: LocalModDefId,
|
|
||||||
defining_mod: LocalModDefId,
|
|
||||||
macro_ev: EffectiveVisibility,
|
|
||||||
) {
|
|
||||||
let module = self.tcx.hir().get_module(module_def_id).0;
|
|
||||||
for item_id in module.item_ids {
|
|
||||||
let def_kind = self.tcx.def_kind(item_id.owner_id);
|
|
||||||
let vis = self.tcx.local_visibility(item_id.owner_id.def_id);
|
|
||||||
self.update_macro_reachable_def(
|
|
||||||
item_id.owner_id.def_id,
|
|
||||||
def_kind,
|
|
||||||
vis,
|
|
||||||
defining_mod,
|
|
||||||
macro_ev,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
for child in self.tcx.module_children_local(module_def_id.to_local_def_id()) {
|
for child in self.tcx.module_children_local(module_def_id.to_local_def_id()) {
|
||||||
// FIXME: Use module children for the logic above too.
|
if let Res::Def(def_kind, def_id) = child.res
|
||||||
if !child.reexport_chain.is_empty()
|
|
||||||
&& child.vis.is_accessible_from(defining_mod, self.tcx)
|
|
||||||
&& let Res::Def(def_kind, def_id) = child.res
|
|
||||||
&& let Some(def_id) = def_id.as_local()
|
&& let Some(def_id) = def_id.as_local()
|
||||||
|
&& child.vis.is_accessible_from(defining_mod, self.tcx)
|
||||||
{
|
{
|
||||||
let vis = self.tcx.local_visibility(def_id);
|
let vis = self.tcx.local_visibility(def_id);
|
||||||
self.update_macro_reachable_def(def_id, def_kind, vis, defining_mod, macro_ev);
|
self.update_macro_reachable_def(def_id, def_kind, vis, defining_mod, macro_ev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update_macro_reachable_def(
|
fn update_macro_reachable_def(
|
||||||
|
Loading…
Reference in New Issue
Block a user