Rollup merge of #114246 - Bryanskiy:type-privacy-lints-fixes, r=petrochenkov

Weaken unnameable_types lint

`unnameable_types` lint is no longer emitted for
- associated types
- internal types

r? ``@petrochenkov``
This commit is contained in:
Matthias Krüger 2023-07-30 20:36:34 +02:00 committed by GitHub
commit d113b5b848
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 4 additions and 20 deletions

View file

@ -1941,7 +1941,7 @@ impl<'tcx> PrivateItemsInPublicInterfacesChecker<'tcx, '_> {
let reexported_at_vis = effective_vis.at_level(Level::Reexported);
let reachable_at_vis = effective_vis.at_level(Level::Reachable);
if reexported_at_vis != reachable_at_vis {
if reachable_at_vis.is_public() && reexported_at_vis != reachable_at_vis {
let hir_id = self.tcx.hir().local_def_id_to_hir_id(def_id);
let span = self.tcx.def_span(def_id.to_def_id());
self.tcx.emit_spanned_lint(
@ -1973,10 +1973,6 @@ impl<'tcx> PrivateItemsInPublicInterfacesChecker<'tcx, '_> {
AssocItemKind::Type => (self.tcx.defaultness(def_id).has_value(), true),
};
if is_assoc_ty {
self.check_unnameable(def_id, self.get(def_id));
}
check.in_assoc_ty = is_assoc_ty;
check.generics().predicates();
if check_ty {

View file

@ -11,12 +11,12 @@ mod m {
pub trait PubTr { //~ ERROR trait `PubTr` is reachable but cannot be named
const C : i32 = 0;
type Alias; //~ ERROR associated type `PubTr::Alias` is reachable but cannot be named
type Alias;
fn f() {}
}
impl PubTr for PubStruct {
type Alias = i32; //~ ERROR associated type `<PubStruct as PubTr>::Alias` is reachable but cannot be named
type Alias = i32;
fn f() {}
}
}

View file

@ -22,17 +22,5 @@ error: trait `PubTr` is reachable but cannot be named
LL | pub trait PubTr {
| ^^^^^^^^^^^^^^^ reachable at visibility `pub`, but can only be named at visibility `pub(crate)`
error: associated type `PubTr::Alias` is reachable but cannot be named
--> $DIR/unnameable_types.rs:14:9
|
LL | type Alias;
| ^^^^^^^^^^ reachable at visibility `pub`, but can only be named at visibility `pub(crate)`
error: associated type `<PubStruct as PubTr>::Alias` is reachable but cannot be named
--> $DIR/unnameable_types.rs:19:9
|
LL | type Alias = i32;
| ^^^^^^^^^^ reachable at visibility `pub`, but can only be named at visibility `pub(crate)`
error: aborting due to 5 previous errors
error: aborting due to 3 previous errors