error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:16:22
   |
LL | trait _0 = Obj;
   |            ---
   |            |
   |            additional non-auto trait
   |            first non-auto trait
...
LL | type _T00 = dyn _0 + _0;
   |                 --   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:19:22
   |
LL | trait _0 = Obj;
   |            ---
   |            |
   |            additional non-auto trait
   |            first non-auto trait
LL | trait _1 = _0;
   |            -- referenced here (first use)
...
LL | type _T01 = dyn _1 + _0;
   |                 --   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:22:22
   |
LL | trait _0 = Obj;
   |            ---
   |            |
   |            additional non-auto trait
   |            first non-auto trait
LL | trait _1 = _0;
   |            --
   |            |
   |            referenced here (additional use)
   |            referenced here (first use)
...
LL | type _T02 = dyn _1 + _1;
   |                 --   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:25:23
   |
LL | trait _0 = Obj;
   |            --- additional non-auto trait
LL | trait _1 = _0;
   |            -- referenced here (additional use)
...
LL | type _T03 = dyn Obj + _1;
   |                 ---   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 first non-auto trait
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:28:22
   |
LL | trait _0 = Obj;
   |            --- first non-auto trait
LL | trait _1 = _0;
   |            -- referenced here (first use)
...
LL | type _T04 = dyn _1 + Obj;
   |                 --   ^^^ additional non-auto trait
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:37:17
   |
LL | trait _0 = Obj;
   |            ---
   |            |
   |            additional non-auto trait
   |            first non-auto trait
LL | trait _1 = _0;
   |            -- referenced here (additional use)
...
LL | trait _2 = _0 + _1;
   |            --   -- referenced here (additional use)
   |            |
   |            referenced here (first use)
...
LL | type _T10 = dyn _2 + _3;
   |                 ^^
   |                 |
   |                 trait alias used in trait object type (additional use)
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:40:22
   |
LL | trait _0 = Obj;
   |            --- additional non-auto trait
...
LL | trait _2 = _0 + _1;
   |            -- referenced here (additional use)
LL | trait _3 = Obj;
   |            --- first non-auto trait
...
LL | type _T11 = dyn _3 + _2;
   |                 --   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:43:23
   |
LL | trait _0 = Obj;
   |            --- additional non-auto trait
...
LL | trait _2 = _0 + _1;
   |            -- referenced here (additional use)
...
LL | type _T12 = dyn Obj + _2;
   |                 ---   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 first non-auto trait
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:46:17
   |
LL | trait _0 = Obj;
   |            ---
   |            |
   |            additional non-auto trait
   |            first non-auto trait
LL | trait _1 = _0;
   |            -- referenced here (additional use)
...
LL | trait _2 = _0 + _1;
   |            --   -- referenced here (additional use)
   |            |
   |            referenced here (first use)
...
LL | type _T13 = dyn _2 + Obj;
   |                 ^^
   |                 |
   |                 trait alias used in trait object type (additional use)
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:49:22
   |
LL | trait _0 = Obj;
   |            --- first non-auto trait
LL | trait _1 = _0;
   |            -- referenced here (first use)
...
LL | trait _3 = Obj;
   |            --- additional non-auto trait
...
LL | type _T14 = dyn _1 + _3;
   |                 --   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:52:22
   |
LL | trait _0 = Obj;
   |            --- additional non-auto trait
LL | trait _1 = _0;
   |            -- referenced here (additional use)
...
LL | trait _3 = Obj;
   |            --- first non-auto trait
...
LL | type _T15 = dyn _3 + _1;
   |                 --   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:55:22
   |
LL | trait _0 = Obj;
   |            --- first non-auto trait
LL | trait _1 = _0;
   |            -- referenced here (first use)
...
LL | trait _3 = Obj;
   |            --- additional non-auto trait
LL | trait _4 = _3;
   |            -- referenced here (additional use)
...
LL | type _T16 = dyn _1 + _4;
   |                 --   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:58:22
   |
LL | trait _0 = Obj;
   |            --- additional non-auto trait
LL | trait _1 = _0;
   |            -- referenced here (additional use)
...
LL | trait _3 = Obj;
   |            --- first non-auto trait
LL | trait _4 = _3;
   |            -- referenced here (first use)
...
LL | type _T17 = dyn _4 + _1;
   |                 --   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:65:22
   |
LL | trait _5 = Obj + Send;
   |            ---
   |            |
   |            additional non-auto trait
   |            first non-auto trait
LL |
LL | type _T20 = dyn _5 + _5;
   |                 --   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:68:23
   |
LL | trait _5 = Obj + Send;
   |            --- additional non-auto trait
...
LL | type _T21 = dyn Obj + _5;
   |                 ---   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 first non-auto trait
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:71:22
   |
LL | trait _5 = Obj + Send;
   |            --- first non-auto trait
...
LL | type _T22 = dyn _5 + Obj;
   |                 --   ^^^ additional non-auto trait
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:74:36
   |
LL | trait _5 = Obj + Send;
   |            --- first non-auto trait
...
LL | type _T23 = dyn _5 + Send + Sync + Obj;
   |                 --                 ^^^ additional non-auto trait
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:81:17
   |
LL | trait _5 = Obj + Send;
   |            ---
   |            |
   |            additional non-auto trait
   |            first non-auto trait
...
LL | trait _6 = _5 + _5; // ==> Obj + Send + Obj + Send
   |            --   -- referenced here (additional use)
   |            |
   |            referenced here (first use)
LL |
LL | type _T30 = dyn _6;
   |                 ^^
   |                 |
   |                 trait alias used in trait object type (additional use)
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:84:17
   |
LL | trait _5 = Obj + Send;
   |            ---
   |            |
   |            additional non-auto trait
   |            first non-auto trait
...
LL | trait _6 = _5 + _5; // ==> Obj + Send + Obj + Send
   |            --   -- referenced here (additional use)
   |            |
   |            referenced here (first use)
...
LL | type _T31 = dyn _6 + Send;
   |                 ^^
   |                 |
   |                 trait alias used in trait object type (additional use)
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:87:24
   |
LL | trait _5 = Obj + Send;
   |            ---
   |            |
   |            additional non-auto trait
   |            first non-auto trait
...
LL | trait _6 = _5 + _5; // ==> Obj + Send + Obj + Send
   |            --   -- referenced here (additional use)
   |            |
   |            referenced here (first use)
...
LL | type _T32 = dyn Send + _6;
   |                        ^^
   |                        |
   |                        trait alias used in trait object type (additional use)
   |                        trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:95:22
   |
LL | trait _5 = Obj + Send;
   |            --- first non-auto trait
...
LL | trait _7 = _5 + Sync;
   |            -- referenced here (first use)
LL | trait _8 = Unpin + _7;
   |                    -- referenced here (first use)
LL |
LL | type _T40 = dyn _8 + Obj;
   |                 --   ^^^ additional non-auto trait
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:98:23
   |
LL | trait _5 = Obj + Send;
   |            --- additional non-auto trait
...
LL | trait _7 = _5 + Sync;
   |            -- referenced here (additional use)
LL | trait _8 = Unpin + _7;
   |                    -- referenced here (additional use)
...
LL | type _T41 = dyn Obj + _8;
   |                 ---   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 first non-auto trait
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:101:22
   |
LL | trait _3 = Obj;
   |            --- additional non-auto trait
LL | trait _4 = _3;
   |            -- referenced here (additional use)
...
LL | trait _5 = Obj + Send;
   |            --- first non-auto trait
...
LL | trait _7 = _5 + Sync;
   |            -- referenced here (first use)
LL | trait _8 = Unpin + _7;
   |                    -- referenced here (first use)
...
LL | type _T42 = dyn _8 + _4;
   |                 --   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:104:22
   |
LL | trait _3 = Obj;
   |            --- first non-auto trait
LL | trait _4 = _3;
   |            -- referenced here (first use)
...
LL | trait _5 = Obj + Send;
   |            --- additional non-auto trait
...
LL | trait _7 = _5 + Sync;
   |            -- referenced here (additional use)
LL | trait _8 = Unpin + _7;
   |                    -- referenced here (additional use)
...
LL | type _T43 = dyn _4 + _8;
   |                 --   ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:107:36
   |
LL | trait _3 = Obj;
   |            --- first non-auto trait
LL | trait _4 = _3;
   |            -- referenced here (first use)
...
LL | trait _5 = Obj + Send;
   |            --- additional non-auto trait
...
LL | trait _7 = _5 + Sync;
   |            -- referenced here (additional use)
LL | trait _8 = Unpin + _7;
   |                    -- referenced here (additional use)
...
LL | type _T44 = dyn _4 + Send + Sync + _8;
   |                 --                 ^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: Obj + Obj {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:117:22
   |
LL | trait _9 = for<'a> ObjL<'a>;
   |            ---------------- first non-auto trait
LL | trait _10 = for<'b> ObjL<'b>;
   |             ---------------- additional non-auto trait
LL | type _T50 = dyn _9 + _10;
   |                 --   ^^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: for<'a> ObjL<'a> + for<'b> ObjL<'b> {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error[E0225]: only auto traits can be used as additional traits in a trait object
  --> $DIR/no-duplicates.rs:123:23
   |
LL | trait _11 = ObjT<for<'a> fn(&'a u8)>;
   |             ------------------------ first non-auto trait
LL | trait _12 = ObjT<for<'b> fn(&'b u8)>;
   |             ------------------------ additional non-auto trait
LL | type _T60 = dyn _11 + _12;
   |                 ---   ^^^ trait alias used in trait object type (additional use)
   |                 |
   |                 trait alias used in trait object type (first use)
   |
   = help: consider creating a new trait with all of these as supertraits and using that trait here instead: `trait NewTrait: ObjT<for<'a> fn(&'a u8)> + ObjT<for<'b> fn(&'b u8)> {}`
   = note: auto-traits like `Send` and `Sync` are traits that have special properties; for more information on them, visit <https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits>

error: aborting due to 27 previous errors

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