error[E0034]: multiple applicable items in scope
  --> $DIR/disambiguate-multiple-trait-2.rs:16:7
   |
LL |     t.foo();
   |       ^^^ multiple `foo` found
   |
note: candidate #1 is defined in the trait `A`
  --> $DIR/disambiguate-multiple-trait-2.rs:4:5
   |
LL |     fn foo(&self);
   |     ^^^^^^^^^^^^^^
note: candidate #2 is defined in the trait `B`
  --> $DIR/disambiguate-multiple-trait-2.rs:10:5
   |
LL |     fn foo(&self);
   |     ^^^^^^^^^^^^^^
help: disambiguate the method for candidate #1
   |
LL -     t.foo();
LL +     A::foo(&t);
   |
help: disambiguate the method for candidate #2
   |
LL -     t.foo();
LL +     B::foo(&t);
   |

error[E0034]: multiple applicable items in scope
  --> $DIR/disambiguate-multiple-trait-2.rs:20:16
   |
LL |     let _ = T::CONST;
   |                ^^^^^ multiple `CONST` found
   |
note: candidate #1 is defined in the trait `A`
  --> $DIR/disambiguate-multiple-trait-2.rs:3:5
   |
LL |     const CONST: usize = 1;
   |     ^^^^^^^^^^^^^^^^^^
note: candidate #2 is defined in the trait `B`
  --> $DIR/disambiguate-multiple-trait-2.rs:9:5
   |
LL |     const CONST: usize;
   |     ^^^^^^^^^^^^^^^^^^
help: use fully-qualified syntax to disambiguate
   |
LL -     let _ = T::CONST;
LL +     let _ = <T as A>::CONST;
   |
LL -     let _ = T::CONST;
LL +     let _ = <T as B>::CONST;
   |

error[E0221]: ambiguous associated type `Type` in bounds of `T`
  --> $DIR/disambiguate-multiple-trait-2.rs:23:12
   |
LL |     type Type;
   |     --------- ambiguous `Type` from `A`
...
LL |     type Type;
   |     --------- ambiguous `Type` from `B`
...
LL |     let _: T::Type;
   |            ^^^^^^^ ambiguous associated type `Type`
   |
help: use fully-qualified syntax to disambiguate
   |
LL -     let _: T::Type;
LL +     let _: <T as A>::Type;
   |
help: use fully-qualified syntax to disambiguate
   |
LL -     let _: T::Type;
LL +     let _: <T as B>::Type;
   |

error[E0034]: multiple applicable items in scope
  --> $DIR/disambiguate-multiple-trait-2.rs:46:8
   |
LL |     S::foo(&s);
   |        ^^^ multiple `foo` found
   |
note: candidate #1 is defined in an impl of the trait `A` for the type `T`
  --> $DIR/disambiguate-multiple-trait-2.rs:35:5
   |
LL |     fn foo(&self) {}
   |     ^^^^^^^^^^^^^
note: candidate #2 is defined in an impl of the trait `B` for the type `T`
  --> $DIR/disambiguate-multiple-trait-2.rs:41:5
   |
LL |     fn foo(&self) {}
   |     ^^^^^^^^^^^^^
help: use fully-qualified syntax to disambiguate
   |
LL -     S::foo(&s);
LL +     A::foo(&s);
   |
LL -     S::foo(&s);
LL +     B::foo(&s);
   |

error[E0034]: multiple applicable items in scope
  --> $DIR/disambiguate-multiple-trait-2.rs:49:16
   |
LL |     let _ = S::CONST;
   |                ^^^^^ multiple `CONST` found
   |
note: candidate #1 is defined in an impl of the trait `A` for the type `T`
  --> $DIR/disambiguate-multiple-trait-2.rs:34:5
   |
LL |     const CONST: usize = 1;
   |     ^^^^^^^^^^^^^^^^^^
note: candidate #2 is defined in an impl of the trait `B` for the type `T`
  --> $DIR/disambiguate-multiple-trait-2.rs:40:5
   |
LL |     const CONST: usize = 1;
   |     ^^^^^^^^^^^^^^^^^^
help: use fully-qualified syntax to disambiguate
   |
LL -     let _ = S::CONST;
LL +     let _ = <S as A>::CONST;
   |
LL -     let _ = S::CONST;
LL +     let _ = <S as B>::CONST;
   |

error[E0223]: ambiguous associated type
  --> $DIR/disambiguate-multiple-trait-2.rs:52:12
   |
LL |     let _: S::Type;
   |            ^^^^^^^
   |
help: use fully-qualified syntax
   |
LL -     let _: S::Type;
LL +     let _: <S as A>::Type;
   |
LL -     let _: S::Type;
LL +     let _: <S as B>::Type;
   |

error: aborting due to 6 previous errors

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