@@ -64,26 +64,14 @@ impl EffectiveVisibility {
64
64
self . at_level ( level) . is_public ( )
65
65
}
66
66
67
- pub const fn from_vis ( vis : Visibility ) -> EffectiveVisibility {
67
+ pub fn from_vis ( vis : Visibility ) -> EffectiveVisibility {
68
68
EffectiveVisibility {
69
69
direct : vis,
70
70
reexported : vis,
71
71
reachable : vis,
72
72
reachable_through_impl_trait : vis,
73
73
}
74
74
}
75
-
76
- #[ must_use]
77
- pub fn min ( mut self , lhs : EffectiveVisibility , tcx : TyCtxt < ' _ > ) -> Self {
78
- for l in Level :: all_levels ( ) {
79
- let rhs_vis = self . at_level_mut ( l) ;
80
- let lhs_vis = * lhs. at_level ( l) ;
81
- if rhs_vis. is_at_least ( lhs_vis, tcx) {
82
- * rhs_vis = lhs_vis;
83
- } ;
84
- }
85
- self
86
- }
87
75
}
88
76
89
77
/// Holds a map of effective visibilities for reachable HIR nodes.
@@ -149,6 +137,24 @@ impl EffectiveVisibilities {
149
137
} ;
150
138
}
151
139
140
+ pub fn set_public_at_level (
141
+ & mut self ,
142
+ id : LocalDefId ,
143
+ lazy_private_vis : impl FnOnce ( ) -> Visibility ,
144
+ level : Level ,
145
+ ) {
146
+ let mut effective_vis = self
147
+ . effective_vis ( id)
148
+ . copied ( )
149
+ . unwrap_or_else ( || EffectiveVisibility :: from_vis ( lazy_private_vis ( ) ) ) ;
150
+ for l in Level :: all_levels ( ) {
151
+ if l <= level {
152
+ * effective_vis. at_level_mut ( l) = Visibility :: Public ;
153
+ }
154
+ }
155
+ self . map . insert ( id, effective_vis) ;
156
+ }
157
+
152
158
pub fn check_invariants ( & self , tcx : TyCtxt < ' _ > , early : bool ) {
153
159
if !cfg ! ( debug_assertions) {
154
160
return ;
@@ -213,7 +219,7 @@ impl<Id: Eq + Hash> EffectiveVisibilities<Id> {
213
219
pub fn update (
214
220
& mut self ,
215
221
id : Id ,
216
- nominal_vis : Option < Visibility > ,
222
+ nominal_vis : Visibility ,
217
223
lazy_private_vis : impl FnOnce ( ) -> Visibility ,
218
224
inherited_effective_vis : EffectiveVisibility ,
219
225
level : Level ,
@@ -237,11 +243,12 @@ impl<Id: Eq + Hash> EffectiveVisibilities<Id> {
237
243
if !( inherited_effective_vis_at_prev_level == inherited_effective_vis_at_level
238
244
&& level != l)
239
245
{
240
- calculated_effective_vis = if let Some ( nominal_vis) = nominal_vis && !nominal_vis. is_at_least ( inherited_effective_vis_at_level, tcx) {
241
- nominal_vis
242
- } else {
243
- inherited_effective_vis_at_level
244
- }
246
+ calculated_effective_vis =
247
+ if nominal_vis. is_at_least ( inherited_effective_vis_at_level, tcx) {
248
+ inherited_effective_vis_at_level
249
+ } else {
250
+ nominal_vis
251
+ } ;
245
252
}
246
253
// effective visibility can't be decreased at next update call for the
247
254
// same id
0 commit comments