error: type `types::Priv` is more private than the item `types::Alias`
  --> $DIR/private-in-public-warn.rs:15:5
   |
LL |     pub type Alias = Priv;
   |     ^^^^^^^^^^^^^^ type alias `types::Alias` is reachable at visibility `pub(crate)`
   |
note: but type `types::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:9:5
   |
LL |     struct Priv;
   |     ^^^^^^^^^^^
note: the lint level is defined here
  --> $DIR/private-in-public-warn.rs:5:9
   |
LL | #![deny(private_interfaces, private_bounds)]
   |         ^^^^^^^^^^^^^^^^^^

error: type `types::Priv` is more private than the item `E::V1::0`
  --> $DIR/private-in-public-warn.rs:17:12
   |
LL |         V1(Priv),
   |            ^^^^ field `E::V1::0` is reachable at visibility `pub(crate)`
   |
note: but type `types::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:9:5
   |
LL |     struct Priv;
   |     ^^^^^^^^^^^

error: type `types::Priv` is more private than the item `E::V2::field`
  --> $DIR/private-in-public-warn.rs:18:14
   |
LL |         V2 { field: Priv },
   |              ^^^^^^^^^^^ field `E::V2::field` is reachable at visibility `pub(crate)`
   |
note: but type `types::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:9:5
   |
LL |     struct Priv;
   |     ^^^^^^^^^^^

error: type `types::Priv` is more private than the item `Tr::C`
  --> $DIR/private-in-public-warn.rs:21:9
   |
LL |         const C: Priv = Priv;
   |         ^^^^^^^^^^^^^ associated constant `Tr::C` is reachable at visibility `pub(crate)`
   |
note: but type `types::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:9:5
   |
LL |     struct Priv;
   |     ^^^^^^^^^^^

error[E0446]: private type `types::Priv` in public interface
  --> $DIR/private-in-public-warn.rs:22:9
   |
LL |     struct Priv;
   |     ----------- `types::Priv` declared as private
...
LL |         type Alias = Priv;
   |         ^^^^^^^^^^ can't leak private type

error: type `types::Priv` is more private than the item `Tr::f1`
  --> $DIR/private-in-public-warn.rs:23:9
   |
LL |         fn f1(arg: Priv) {}
   |         ^^^^^^^^^^^^^^^^ associated function `Tr::f1` is reachable at visibility `pub(crate)`
   |
note: but type `types::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:9:5
   |
LL |     struct Priv;
   |     ^^^^^^^^^^^

error: type `types::Priv` is more private than the item `Tr::f2`
  --> $DIR/private-in-public-warn.rs:24:9
   |
LL |         fn f2() -> Priv { panic!() }
   |         ^^^^^^^^^^^^^^^ associated function `Tr::f2` is reachable at visibility `pub(crate)`
   |
note: but type `types::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:9:5
   |
LL |     struct Priv;
   |     ^^^^^^^^^^^

error: type `types::Priv` is more private than the item `types::ES`
  --> $DIR/private-in-public-warn.rs:27:9
   |
LL |         pub static ES: Priv;
   |         ^^^^^^^^^^^^^^^^^^^ static `types::ES` is reachable at visibility `pub(crate)`
   |
note: but type `types::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:9:5
   |
LL |     struct Priv;
   |     ^^^^^^^^^^^

error: type `types::Priv` is more private than the item `types::ef1`
  --> $DIR/private-in-public-warn.rs:28:9
   |
LL |         pub fn ef1(arg: Priv);
   |         ^^^^^^^^^^^^^^^^^^^^^^ function `types::ef1` is reachable at visibility `pub(crate)`
   |
note: but type `types::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:9:5
   |
LL |     struct Priv;
   |     ^^^^^^^^^^^

error: type `types::Priv` is more private than the item `types::ef2`
  --> $DIR/private-in-public-warn.rs:29:9
   |
LL |         pub fn ef2() -> Priv;
   |         ^^^^^^^^^^^^^^^^^^^^^ function `types::ef2` is reachable at visibility `pub(crate)`
   |
note: but type `types::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:9:5
   |
LL |     struct Priv;
   |     ^^^^^^^^^^^

error[E0446]: private type `types::Priv` in public interface
  --> $DIR/private-in-public-warn.rs:32:9
   |
LL |     struct Priv;
   |     ----------- `types::Priv` declared as private
...
LL |         type Alias = Priv;
   |         ^^^^^^^^^^ can't leak private type

error: trait `traits::PrivTr` is more private than the item `traits::Alias`
  --> $DIR/private-in-public-warn.rs:41:5
   |
LL |     pub type Alias<T: PrivTr> = T;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^ type alias `traits::Alias` is reachable at visibility `pub(crate)`
   |
note: but trait `traits::PrivTr` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:37:5
   |
LL |     trait PrivTr {}
   |     ^^^^^^^^^^^^
note: the lint level is defined here
  --> $DIR/private-in-public-warn.rs:5:29
   |
LL | #![deny(private_interfaces, private_bounds)]
   |                             ^^^^^^^^^^^^^^

error: trait `traits::PrivTr` is more private than the item `traits::Tr1`
  --> $DIR/private-in-public-warn.rs:43:5
   |
LL |     pub trait Tr1: PrivTr {}
   |     ^^^^^^^^^^^^^^^^^^^^^ trait `traits::Tr1` is reachable at visibility `pub(crate)`
   |
note: but trait `traits::PrivTr` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:37:5
   |
LL |     trait PrivTr {}
   |     ^^^^^^^^^^^^

error: trait `traits::PrivTr` is more private than the item `traits::Tr2`
  --> $DIR/private-in-public-warn.rs:44:5
   |
LL |     pub trait Tr2<T: PrivTr> {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^ trait `traits::Tr2` is reachable at visibility `pub(crate)`
   |
note: but trait `traits::PrivTr` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:37:5
   |
LL |     trait PrivTr {}
   |     ^^^^^^^^^^^^

error: trait `traits::PrivTr` is more private than the item `traits::Tr3::Alias`
  --> $DIR/private-in-public-warn.rs:46:9
   |
LL |         type Alias: PrivTr;
   |         ^^^^^^^^^^^^^^^^^^ associated type `traits::Tr3::Alias` is reachable at visibility `pub(crate)`
   |
note: but trait `traits::PrivTr` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:37:5
   |
LL |     trait PrivTr {}
   |     ^^^^^^^^^^^^

error: trait `traits::PrivTr` is more private than the item `traits::Tr3::f`
  --> $DIR/private-in-public-warn.rs:48:9
   |
LL |         fn f<T: PrivTr>(arg: T) {}
   |         ^^^^^^^^^^^^^^^^^^^^^^^ associated function `traits::Tr3::f` is reachable at visibility `pub(crate)`
   |
note: but trait `traits::PrivTr` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:37:5
   |
LL |     trait PrivTr {}
   |     ^^^^^^^^^^^^

error: trait `traits::PrivTr` is more private than the item `traits::Pub<T>`
  --> $DIR/private-in-public-warn.rs:50:5
   |
LL |     impl<T: PrivTr> Pub<T> {}
   |     ^^^^^^^^^^^^^^^^^^^^^^ implementation `traits::Pub<T>` is reachable at visibility `pub(crate)`
   |
note: but trait `traits::PrivTr` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:37:5
   |
LL |     trait PrivTr {}
   |     ^^^^^^^^^^^^

error: trait `traits_where::PrivTr` is more private than the item `traits_where::Alias`
  --> $DIR/private-in-public-warn.rs:59:5
   |
LL |     pub type Alias<T> where T: PrivTr = T;
   |     ^^^^^^^^^^^^^^^^^ type alias `traits_where::Alias` is reachable at visibility `pub(crate)`
   |
note: but trait `traits_where::PrivTr` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:55:5
   |
LL |     trait PrivTr {}
   |     ^^^^^^^^^^^^

error: trait `traits_where::PrivTr` is more private than the item `traits_where::Tr2`
  --> $DIR/private-in-public-warn.rs:62:5
   |
LL |     pub trait Tr2<T> where T: PrivTr {}
   |     ^^^^^^^^^^^^^^^^ trait `traits_where::Tr2` is reachable at visibility `pub(crate)`
   |
note: but trait `traits_where::PrivTr` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:55:5
   |
LL |     trait PrivTr {}
   |     ^^^^^^^^^^^^

error: trait `traits_where::PrivTr` is more private than the item `traits_where::Tr3::f`
  --> $DIR/private-in-public-warn.rs:65:9
   |
LL |         fn f<T>(arg: T) where T: PrivTr {}
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `traits_where::Tr3::f` is reachable at visibility `pub(crate)`
   |
note: but trait `traits_where::PrivTr` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:55:5
   |
LL |     trait PrivTr {}
   |     ^^^^^^^^^^^^

error: trait `traits_where::PrivTr` is more private than the item `traits_where::Pub<T>`
  --> $DIR/private-in-public-warn.rs:68:5
   |
LL |     impl<T> Pub<T> where T: PrivTr {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation `traits_where::Pub<T>` is reachable at visibility `pub(crate)`
   |
note: but trait `traits_where::PrivTr` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:55:5
   |
LL |     trait PrivTr {}
   |     ^^^^^^^^^^^^

error: trait `generics::PrivTr<generics::Pub>` is more private than the item `generics::Tr1`
  --> $DIR/private-in-public-warn.rs:79:5
   |
LL |     pub trait Tr1: PrivTr<Pub> {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ trait `generics::Tr1` is reachable at visibility `pub(crate)`
   |
note: but trait `generics::PrivTr<generics::Pub>` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:76:5
   |
LL |     trait PrivTr<T> {}
   |     ^^^^^^^^^^^^^^^

error: type `generics::Priv` is more private than the item `generics::Tr2`
  --> $DIR/private-in-public-warn.rs:81:5
   |
LL |     pub trait Tr2: PubTr<Priv> {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^ trait `generics::Tr2` is reachable at visibility `pub(crate)`
   |
note: but type `generics::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:74:5
   |
LL |     struct Priv<T = u8>(T);
   |     ^^^^^^^^^^^^^^^^^^^

error: type `generics::Priv` is more private than the item `generics::Tr3`
  --> $DIR/private-in-public-warn.rs:82:5
   |
LL |     pub trait Tr3: PubTr<[Priv; 1]> {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trait `generics::Tr3` is reachable at visibility `pub(crate)`
   |
note: but type `generics::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:74:5
   |
LL |     struct Priv<T = u8>(T);
   |     ^^^^^^^^^^^^^^^^^^^

error: type `generics::Priv` is more private than the item `Tr4`
  --> $DIR/private-in-public-warn.rs:83:5
   |
LL |     pub trait Tr4: PubTr<Pub<Priv>> {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trait `Tr4` is reachable at visibility `pub(crate)`
   |
note: but type `generics::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:74:5
   |
LL |     struct Priv<T = u8>(T);
   |     ^^^^^^^^^^^^^^^^^^^

error[E0446]: private type `impls::Priv` in public interface
  --> $DIR/private-in-public-warn.rs:109:9
   |
LL |     struct Priv;
   |     ----------- `impls::Priv` declared as private
...
LL |         type Alias = Priv;
   |         ^^^^^^^^^^ can't leak private type

error: type `aliases_pub::Priv` is more private than the item `aliases_pub::<impl Pub2>::f`
  --> $DIR/private-in-public-warn.rs:180:9
   |
LL |         pub fn f(arg: Priv) {}
   |         ^^^^^^^^^^^^^^^^^^^ associated function `aliases_pub::<impl Pub2>::f` is reachable at visibility `pub(crate)`
   |
note: but type `aliases_pub::Priv` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:153:5
   |
LL |     struct Priv;
   |     ^^^^^^^^^^^

error[E0446]: private type `aliases_pub::Priv` in public interface
  --> $DIR/private-in-public-warn.rs:183:9
   |
LL |     struct Priv;
   |     ----------- `aliases_pub::Priv` declared as private
...
LL |         type Check = Priv;
   |         ^^^^^^^^^^ can't leak private type

error[E0446]: private type `aliases_pub::Priv` in public interface
  --> $DIR/private-in-public-warn.rs:186:9
   |
LL |     struct Priv;
   |     ----------- `aliases_pub::Priv` declared as private
...
LL |         type Check = Priv;
   |         ^^^^^^^^^^ can't leak private type

error[E0446]: private type `aliases_pub::Priv` in public interface
  --> $DIR/private-in-public-warn.rs:189:9
   |
LL |     struct Priv;
   |     ----------- `aliases_pub::Priv` declared as private
...
LL |         type Check = Priv;
   |         ^^^^^^^^^^ can't leak private type

error[E0446]: private type `aliases_pub::Priv` in public interface
  --> $DIR/private-in-public-warn.rs:192:9
   |
LL |     struct Priv;
   |     ----------- `aliases_pub::Priv` declared as private
...
LL |         type Check = Priv;
   |         ^^^^^^^^^^ can't leak private type

error: trait `PrivTr1` is more private than the item `aliases_priv::Tr1`
  --> $DIR/private-in-public-warn.rs:222:5
   |
LL |     pub trait Tr1: PrivUseAliasTr {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trait `aliases_priv::Tr1` is reachable at visibility `pub(crate)`
   |
note: but trait `PrivTr1` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:208:5
   |
LL |     trait PrivTr1<T = u8> {
   |     ^^^^^^^^^^^^^^^^^^^^^

error: trait `PrivTr1<Priv2>` is more private than the item `aliases_priv::Tr2`
  --> $DIR/private-in-public-warn.rs:224:5
   |
LL |     pub trait Tr2: PrivUseAliasTr<PrivAlias> {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trait `aliases_priv::Tr2` is reachable at visibility `pub(crate)`
   |
note: but trait `PrivTr1<Priv2>` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:208:5
   |
LL |     trait PrivTr1<T = u8> {
   |     ^^^^^^^^^^^^^^^^^^^^^

error: type `Priv2` is more private than the item `aliases_priv::Tr2`
  --> $DIR/private-in-public-warn.rs:224:5
   |
LL |     pub trait Tr2: PrivUseAliasTr<PrivAlias> {}
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ trait `aliases_priv::Tr2` is reachable at visibility `pub(crate)`
   |
note: but type `Priv2` is only usable at visibility `pub(self)`
  --> $DIR/private-in-public-warn.rs:206:5
   |
LL |     struct Priv2;
   |     ^^^^^^^^^^^^

warning: bounds on generic parameters in type aliases are not enforced
  --> $DIR/private-in-public-warn.rs:41:23
   |
LL |     pub type Alias<T: PrivTr> = T;
   |                     --^^^^^^
   |                     | |
   |                     | will not be checked at usage sites of the type alias
   |                     help: remove this bound
   |
   = note: this is a known limitation of the type checker that may be lifted in a future edition.
           see issue #112792 <https://github.com/rust-lang/rust/issues/112792> for more information
   = help: add `#![feature(lazy_type_alias)]` to the crate attributes to enable the desired semantics
   = note: `#[warn(type_alias_bounds)]` on by default

warning: where clauses on type aliases are not enforced
  --> $DIR/private-in-public-warn.rs:59:29
   |
LL |     pub type Alias<T> where T: PrivTr = T;
   |                       ------^^^^^^^^^
   |                       |     |
   |                       |     will not be checked at usage sites of the type alias
   |                       help: remove this where clause
   |
   = note: this is a known limitation of the type checker that may be lifted in a future edition.
           see issue #112792 <https://github.com/rust-lang/rust/issues/112792> for more information
   = help: add `#![feature(lazy_type_alias)]` to the crate attributes to enable the desired semantics

error: aborting due to 34 previous errors; 2 warnings emitted

For more information about this error, try `rustc --explain E0446`.
