-impl<'a, 'tcx> LibEmbargoVisitor<'a, 'tcx> {
- pub(crate) fn new(cx: &'a mut crate::core::DocContext<'tcx>) -> LibEmbargoVisitor<'a, 'tcx> {
- LibEmbargoVisitor {
- tcx: cx.tcx,
- effective_visibilities: &mut cx.cache.effective_visibilities,
- prev_level: Some(Level::Direct),
- visited_mods: FxHashSet::default(),
- }
- }
-
- pub(crate) fn visit_lib(&mut self, cnum: CrateNum) {
- let did = cnum.as_def_id();
- self.update(did, Some(Level::Direct));
- self.visit_mod(did);
- }
-
- // Updates node level and returns the updated level
- fn update(&mut self, did: DefId, level: Option<Level>) -> Option<Level> {
- let is_hidden = self.tcx.is_doc_hidden(did);
-
- let old_level = self.effective_visibilities.public_at_level(did);
- // Visibility levels can only grow
- if level > old_level && !is_hidden {
- self.effective_visibilities.set_public_at_level(
- did,
- || Visibility::Restricted(CRATE_DEF_ID),
- level.unwrap(),
- );
- level
- } else {
- old_level
- }
- }
-
- pub(crate) fn visit_mod(&mut self, def_id: DefId) {