error[E0599]: no method named `a` found for struct `S` in the current scope
  --> $DIR/item-privacy.rs:67:7
   |
LL | struct S;
   | -------- method `a` not found for this struct
...
LL |     S.a();
   |       ^
   |
   = help: items from traits can only be used if the trait is implemented and in scope
   = help: trait `method::A` which provides `a` is implemented but not reachable
help: there is a method `b` with a similar name
   |
LL |     S.b();
   |       ~

error[E0599]: no method named `b` found for struct `S` in the current scope
  --> $DIR/item-privacy.rs:68:7
   |
LL | struct S;
   | -------- method `b` not found for this struct
...
LL |         fn b(&self) { }
   |            - the method is available for `S` here
...
LL |     S.b();
   |       ^
   |
   = help: items from traits can only be used if the trait is in scope
help: trait `B` which provides `b` is implemented but not in scope; perhaps you want to import it
   |
LL + use method::B;
   |
help: there is a method `c` with a similar name
   |
LL |     S.c();
   |       ~

error[E0624]: method `a` is private
  --> $DIR/item-privacy.rs:72:7
   |
LL |         fn a(&self) { }
   |         ----------- private method defined here
...
LL |     c.a();
   |       ^ private method

error[E0599]: no function or associated item named `a` found for struct `S` in the current scope
  --> $DIR/item-privacy.rs:78:8
   |
LL | struct S;
   | -------- function or associated item `a` not found for this struct
...
LL |     S::a(&S);
   |        ^ function or associated item not found in `S`
   |
   = help: items from traits can only be used if the trait is implemented and in scope
   = help: trait `method::A` which provides `a` is implemented but not reachable
help: there is an associated constant `B` with a similar name
  --> $DIR/item-privacy.rs:29:9
   |
LL |         const B: u8 = 0;
   |         ^^^^^^^^^^^

error[E0599]: no function or associated item named `b` found for struct `S` in the current scope
  --> $DIR/item-privacy.rs:80:8
   |
LL | struct S;
   | -------- function or associated item `b` not found for this struct
...
LL |     S::b(&S);
   |        ^ function or associated item not found in `S`
   |
   = help: items from traits can only be used if the trait is in scope
help: there is an associated constant `B` with a similar name
  --> $DIR/item-privacy.rs:29:9
   |
LL |         const B: u8 = 0;
   |         ^^^^^^^^^^^
help: trait `B` which provides `b` is implemented but not in scope; perhaps you want to import it
   |
LL + use method::B;
   |

error[E0624]: method `a` is private
  --> $DIR/item-privacy.rs:84:14
   |
LL |         fn a(&self) { }
   |         ----------- private method defined here
...
LL |     <dyn C>::a(&S);
   |              ^ private method

error[E0599]: no associated item named `A` found for struct `S` in the current scope
  --> $DIR/item-privacy.rs:97:8
   |
LL | struct S;
   | -------- associated item `A` not found for this struct
...
LL |     S::A;
   |        ^ associated item not found in `S`
   |
   = help: items from traits can only be used if the trait is implemented and in scope
   = help: trait `assoc_const::A` which provides `A` is implemented but not reachable
help: there is an associated constant `B` with a similar name
   |
LL |     S::B;
   |        ~

error[E0599]: no associated item named `B` found for struct `S` in the current scope
  --> $DIR/item-privacy.rs:98:8
   |
LL | struct S;
   | -------- associated item `B` not found for this struct
...
LL |     S::B;
   |        ^ associated item not found in `S`
   |
   = help: items from traits can only be used if the trait is in scope
help: there is a method `b` with a similar name
  --> $DIR/item-privacy.rs:11:9
   |
LL |         fn b(&self) { }
   |         ^^^^^^^^^^^
help: trait `B` which provides `B` is implemented but not in scope; perhaps you want to import it
   |
LL + use assoc_const::B;
   |

error[E0624]: associated constant `A` is private
  --> $DIR/item-privacy.rs:101:14
   |
LL |         const A: u8 = 0;
   |         ----------- private associated constant defined here
...
LL |     <dyn C>::A;
   |              ^ private associated constant

error[E0038]: the trait `assoc_const::C` cannot be made into an object
  --> $DIR/item-privacy.rs:101:6
   |
LL |     <dyn C>::A;
   |      ^^^^^ `assoc_const::C` cannot be made into an object
   |
note: for a trait to be "dyn-compatible" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
  --> $DIR/item-privacy.rs:25:15
   |
LL |         const A: u8 = 0;
   |               ^ ...because it contains this associated `const`
...
LL |         const B: u8 = 0;
   |               ^ ...because it contains this associated `const`
...
LL |     pub trait C: A + B {
   |               - this trait cannot be made into an object...
LL |         const C: u8 = 0;
   |               ^ ...because it contains this associated `const`
   = help: consider moving `C` to another trait
   = help: consider moving `A` to another trait
   = help: consider moving `B` to another trait
   = help: only type `S` implements the trait, consider using it directly instead

error[E0223]: ambiguous associated type
  --> $DIR/item-privacy.rs:115:12
   |
LL |     let _: S::A;
   |            ^^^^
   |
help: if there were a trait named `Example` with associated type `A` implemented for `S`, you could use the fully-qualified path
   |
LL |     let _: <S as Example>::A;
   |            ~~~~~~~~~~~~~~~~~

error[E0223]: ambiguous associated type
  --> $DIR/item-privacy.rs:116:12
   |
LL |     let _: S::B;
   |            ^^^^ help: use fully-qualified syntax: `<S as assoc_ty::B>::B`

error[E0223]: ambiguous associated type
  --> $DIR/item-privacy.rs:117:12
   |
LL |     let _: S::C;
   |            ^^^^ help: use fully-qualified syntax: `<S as assoc_ty::C>::C`

error[E0624]: associated type `A` is private
  --> $DIR/item-privacy.rs:119:12
   |
LL |         type A = u8;
   |         ------ the associated type is defined here
...
LL |     let _: T::A;
   |            ^^^^ private associated type

error[E0624]: associated type `A` is private
  --> $DIR/item-privacy.rs:128:9
   |
LL |         type A = u8;
   |         ------ the associated type is defined here
...
LL |         A = u8,
   |         ^^^^^^ private associated type

error: aborting due to 15 previous errors

Some errors have detailed explanations: E0038, E0223, E0599, E0624.
For more information about an error, try `rustc --explain E0038`.
