resolve: Remove visibility hacks for enum variants and trait items
Special treatment like this was necessary before `pub(restricted)` had been implemented and only two visibilities existed - `pub` and non-`pub`. Now it's no longer necessary and the desired behavior follows from `pub(restricted)`-style visibilities naturally assigned to enum variants and trait items.
This commit is contained in:
parent
b4b6b62e70
commit
8e74842089
8 changed files with 80 additions and 137 deletions
|
@ -750,27 +750,12 @@ impl<'a> NameBinding<'a> {
|
|||
fn is_possibly_imported_variant(&self) -> bool {
|
||||
match self.kind {
|
||||
NameBindingKind::Import { binding, .. } => binding.is_possibly_imported_variant(),
|
||||
_ => self.is_variant(),
|
||||
}
|
||||
}
|
||||
|
||||
// We sometimes need to treat variants as `pub` for backwards compatibility.
|
||||
fn pseudo_vis(&self) -> ty::Visibility {
|
||||
if self.is_variant() && self.res().def_id().is_local() {
|
||||
ty::Visibility::Public
|
||||
} else {
|
||||
self.vis
|
||||
}
|
||||
}
|
||||
|
||||
fn is_variant(&self) -> bool {
|
||||
matches!(
|
||||
self.kind,
|
||||
NameBindingKind::Res(
|
||||
Res::Def(DefKind::Variant | DefKind::Ctor(CtorOf::Variant, ..), _),
|
||||
_,
|
||||
)
|
||||
)
|
||||
) => true,
|
||||
NameBindingKind::Res(..) | NameBindingKind::Module(..) => false,
|
||||
}
|
||||
}
|
||||
|
||||
fn is_extern_crate(&self) -> bool {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue