error: type `for<'a> fn(&'a priv_trait::Pub) {<priv_trait::Pub as PrivTr>::method}` is private
  --> $DIR/associated-item-privacy-trait.rs:15:21
   |
LL |         let value = <Pub as PrivTr>::method;
   |                     ^^^^^^^^^^^^^^^^^^^^^^^ private type
...
LL |     priv_trait::mac!();
   |     ------------------ in this macro invocation
   |
   = note: this error originates in the macro `priv_trait::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `for<'a> fn(&'a priv_trait::Pub) {<priv_trait::Pub as PrivTr>::method}` is private
  --> $DIR/associated-item-privacy-trait.rs:17:9
   |
LL |         value;
   |         ^^^^^ private type
...
LL |     priv_trait::mac!();
   |     ------------------ in this macro invocation
   |
   = note: this error originates in the macro `priv_trait::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `for<'a> fn(&'a Self) {<Self as PrivTr>::method}` is private
  --> $DIR/associated-item-privacy-trait.rs:19:13
   |
LL |         Pub.method();
   |             ^^^^^^ private type
...
LL |     priv_trait::mac!();
   |     ------------------ in this macro invocation
   |
   = note: this error originates in the macro `priv_trait::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: associated constant `PrivTr::CONST` is private
  --> $DIR/associated-item-privacy-trait.rs:21:9
   |
LL |         <Pub as PrivTr>::CONST;
   |         ^^^^^^^^^^^^^^^^^^^^^^ private associated constant
...
LL |     priv_trait::mac!();
   |     ------------------ in this macro invocation
   |
   = note: this error originates in the macro `priv_trait::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: associated type `PrivTr::AssocTy` is private
  --> $DIR/associated-item-privacy-trait.rs:23:16
   |
LL |         let _: <Pub as PrivTr>::AssocTy;
   |                ^^^^^^^^^^^^^^^^^^^^^^^^ private associated type
...
LL |     priv_trait::mac!();
   |     ------------------ in this macro invocation
   |
   = note: this error originates in the macro `priv_trait::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: associated type `PrivTr::AssocTy` is private
  --> $DIR/associated-item-privacy-trait.rs:25:34
   |
LL |         pub type InSignatureTy = <Pub as PrivTr>::AssocTy;
   |                                  ^^^^^^^^^^^^^^^^^^^^^^^^ private associated type
...
LL |     priv_trait::mac!();
   |     ------------------ in this macro invocation
   |
   = note: this error originates in the macro `priv_trait::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: trait `PrivTr` is private
  --> $DIR/associated-item-privacy-trait.rs:27:34
   |
LL |         pub trait InSignatureTr: PrivTr {}
   |                                  ^^^^^^ private trait
...
LL |     priv_trait::mac!();
   |     ------------------ in this macro invocation
   |
   = note: this error originates in the macro `priv_trait::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_signature::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:46:21
   |
LL |         let value = <Pub as PubTr>::method;
   |                     ^^^^^^^^^^^^^^^^^^^^^^ private type
...
LL |     priv_signature::mac!();
   |     ---------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_signature::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_signature::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:48:9
   |
LL |         value;
   |         ^^^^^ private type
...
LL |     priv_signature::mac!();
   |     ---------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_signature::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_signature::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:50:13
   |
LL |         Pub.method(loop {});
   |             ^^^^^^ private type
...
LL |     priv_signature::mac!();
   |     ---------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_signature::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:67:21
   |
LL |         let value = <Pub as PubTr>::method::<Priv>;
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ private type
...
LL |     priv_substs::mac!();
   |     ------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:69:9
   |
LL |         value;
   |         ^^^^^ private type
...
LL |     priv_substs::mac!();
   |     ------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:71:9
   |
LL |         Pub.method::<Priv>();
   |         ^^^^^^^^^^^^^^^^^^^^ private type
...
LL |     priv_substs::mac!();
   |     ------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:91:21
   |
LL |         let value = <Pub as PubTr>::method;
   |                     ^^^^^^^^^^^^^^^^^^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:93:9
   |
LL |         value;
   |         ^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:95:21
   |
LL |         let value = <Pub as PubTr<_>>::method;
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:97:9
   |
LL |         value;
   |         ^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:99:9
   |
LL |         Pub.method();
   |         ^^^^^^^^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:102:21
   |
LL |         let value = <Priv as PubTr<_>>::method;
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:104:9
   |
LL |         value;
   |         ^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:106:9
   |
LL |         Priv.method();
   |         ^^^^^^^^^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:109:9
   |
LL |         <Pub as PubTr>::CONST;
   |         ^^^^^^^^^^^^^^^^^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:111:9
   |
LL |         <Pub as PubTr<_>>::CONST;
   |         ^^^^^^^^^^^^^^^^^^^^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:113:9
   |
LL |         <Priv as PubTr<_>>::CONST;
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:117:30
   |
LL |         let _: <Pub as PubTr<_>>::AssocTy;
   |                              ^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:119:17
   |
LL |         let _: <Priv as PubTr<_>>::AssocTy;
   |                 ^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:122:35
   |
LL |         pub type InSignatureTy1 = <Pub as PubTr>::AssocTy;
   |                                   ^^^^^^^^^^^^^^^^^^^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:124:35
   |
LL |         pub type InSignatureTy2 = <Priv as PubTr<Pub>>::AssocTy;
   |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: type `priv_parent_substs::Priv` is private
  --> $DIR/associated-item-privacy-trait.rs:126:14
   |
LL |         impl PubTr for u8 {}
   |              ^^^^^ private type
...
LL |     priv_parent_substs::mac!();
   |     -------------------------- in this macro invocation
   |
   = note: this error originates in the macro `priv_parent_substs::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: trait `PrivTr` is private
  --> $DIR/associated-item-privacy-trait.rs:29:14
   |
LL |         impl PrivTr for u8 {}
   |              ^^^^^^ private trait
...
LL |     priv_trait::mac!();
   |     ------------------ in this macro invocation
   |
   = note: this error originates in the macro `priv_trait::mac` (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to 30 previous errors

