warning: type `m1::Priv` is more private than the item `m1::<impl SemiPriv>::f`
  --> $DIR/issue-30079.rs:6:9
   |
LL |         pub fn f(_: Priv) {}
   |         ^^^^^^^^^^^^^^^^^ associated function `m1::<impl SemiPriv>::f` is reachable at visibility `pub(crate)`
   |
note: but type `m1::Priv` is only usable at visibility `pub(self)`
  --> $DIR/issue-30079.rs:4:5
   |
LL |     struct Priv;
   |     ^^^^^^^^^^^
   = note: `#[warn(private_interfaces)]` on by default

error[E0446]: private type `m2::Priv` in public interface
  --> $DIR/issue-30079.rs:17:9
   |
LL |     struct Priv;
   |     ----------- `m2::Priv` declared as private
LL |     impl std::ops::Deref for crate::SemiPriv {
LL |         type Target = Priv;
   |         ^^^^^^^^^^^ can't leak private type

error[E0446]: private type `m3::Priv` in public interface
  --> $DIR/issue-30079.rs:34:9
   |
LL |     struct Priv;
   |     ----------- `m3::Priv` declared as private
LL |     impl crate::SemiPrivTrait for () {
LL |         type Assoc = Priv;
   |         ^^^^^^^^^^ can't leak private type

error: aborting due to 2 previous errors; 1 warning emitted

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