diff options
| author | Michael Goulet <michael@errs.io> | 2023-05-08 21:28:21 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-05-08 21:47:44 +0000 |
| commit | 5fcf2e6edc07e38e24201146be9fb58fe6cd72a0 (patch) | |
| tree | 22d793771636f2e273ddc9169aa628f94913844b /compiler/rustc_middle/src | |
| parent | e315bbf736acc6408955f48e2effb1645bf1a022 (diff) | |
| download | rust-5fcf2e6edc07e38e24201146be9fb58fe6cd72a0.tar.gz rust-5fcf2e6edc07e38e24201146be9fb58fe6cd72a0.zip | |
Revert "Populate effective visibilities in `rustc_privacy`"
This reverts commit cff85f22f5030fbe7266d272da74a9e76160523c.
Diffstat (limited to 'compiler/rustc_middle/src')
| -rw-r--r-- | compiler/rustc_middle/src/middle/privacy.rs | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/compiler/rustc_middle/src/middle/privacy.rs b/compiler/rustc_middle/src/middle/privacy.rs index aeb6a1601fc..967fed687b6 100644 --- a/compiler/rustc_middle/src/middle/privacy.rs +++ b/compiler/rustc_middle/src/middle/privacy.rs @@ -64,7 +64,7 @@ impl EffectiveVisibility { self.at_level(level).is_public() } - pub const fn from_vis(vis: Visibility) -> EffectiveVisibility { + pub fn from_vis(vis: Visibility) -> EffectiveVisibility { EffectiveVisibility { direct: vis, reexported: vis, @@ -72,18 +72,6 @@ impl EffectiveVisibility { reachable_through_impl_trait: vis, } } - - #[must_use] - pub fn min(mut self, lhs: EffectiveVisibility, tcx: TyCtxt<'_>) -> Self { - for l in Level::all_levels() { - let rhs_vis = self.at_level_mut(l); - let lhs_vis = *lhs.at_level(l); - if rhs_vis.is_at_least(lhs_vis, tcx) { - *rhs_vis = lhs_vis; - }; - } - self - } } /// Holds a map of effective visibilities for reachable HIR nodes. @@ -149,6 +137,24 @@ impl EffectiveVisibilities { }; } + pub fn set_public_at_level( + &mut self, + id: LocalDefId, + lazy_private_vis: impl FnOnce() -> Visibility, + level: Level, + ) { + let mut effective_vis = self + .effective_vis(id) + .copied() + .unwrap_or_else(|| EffectiveVisibility::from_vis(lazy_private_vis())); + for l in Level::all_levels() { + if l <= level { + *effective_vis.at_level_mut(l) = Visibility::Public; + } + } + self.map.insert(id, effective_vis); + } + pub fn check_invariants(&self, tcx: TyCtxt<'_>, early: bool) { if !cfg!(debug_assertions) { return; @@ -213,7 +219,7 @@ impl<Id: Eq + Hash> EffectiveVisibilities<Id> { pub fn update( &mut self, id: Id, - nominal_vis: Option<Visibility>, + nominal_vis: Visibility, lazy_private_vis: impl FnOnce() -> Visibility, inherited_effective_vis: EffectiveVisibility, level: Level, @@ -237,11 +243,12 @@ impl<Id: Eq + Hash> EffectiveVisibilities<Id> { if !(inherited_effective_vis_at_prev_level == inherited_effective_vis_at_level && level != l) { - calculated_effective_vis = if let Some(nominal_vis) = nominal_vis && !nominal_vis.is_at_least(inherited_effective_vis_at_level, tcx) { - nominal_vis - } else { - inherited_effective_vis_at_level - } + calculated_effective_vis = + if nominal_vis.is_at_least(inherited_effective_vis_at_level, tcx) { + inherited_effective_vis_at_level + } else { + nominal_vis + }; } // effective visibility can't be decreased at next update call for the // same id |
