| 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`. |