summaryrefslogtreecommitdiffstats
path: root/tests/ui/traits
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /tests/ui/traits
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--tests/ui/traits/alias/ambiguous.rs (renamed from src/test/ui/traits/alias/ambiguous.rs)0
-rw-r--r--tests/ui/traits/alias/ambiguous.stderr (renamed from src/test/ui/traits/alias/ambiguous.stderr)0
-rw-r--r--tests/ui/traits/alias/auxiliary/greeter.rs (renamed from src/test/ui/traits/alias/auxiliary/greeter.rs)0
-rw-r--r--tests/ui/traits/alias/auxiliary/send_sync.rs (renamed from src/test/ui/traits/alias/auxiliary/send_sync.rs)0
-rw-r--r--tests/ui/traits/alias/basic.rs (renamed from src/test/ui/traits/alias/basic.rs)0
-rw-r--r--tests/ui/traits/alias/bounds.rs (renamed from src/test/ui/traits/alias/bounds.rs)0
-rw-r--r--tests/ui/traits/alias/cross-crate.rs (renamed from src/test/ui/traits/alias/cross-crate.rs)0
-rw-r--r--tests/ui/traits/alias/cross-crate.stderr (renamed from src/test/ui/traits/alias/cross-crate.stderr)0
-rw-r--r--tests/ui/traits/alias/generic-default-in-dyn.rs (renamed from src/test/ui/traits/alias/generic-default-in-dyn.rs)0
-rw-r--r--tests/ui/traits/alias/generic-default-in-dyn.stderr (renamed from src/test/ui/traits/alias/generic-default-in-dyn.stderr)12
-rw-r--r--tests/ui/traits/alias/impl.rs (renamed from src/test/ui/traits/alias/impl.rs)0
-rw-r--r--tests/ui/traits/alias/impl.stderr (renamed from src/test/ui/traits/alias/impl.stderr)0
-rw-r--r--tests/ui/traits/alias/import-cross-crate.rs (renamed from src/test/ui/traits/alias/import-cross-crate.rs)0
-rw-r--r--tests/ui/traits/alias/import.rs (renamed from src/test/ui/traits/alias/import.rs)0
-rw-r--r--tests/ui/traits/alias/issue-60021-assoc-method-resolve.rs (renamed from src/test/ui/traits/alias/issue-60021-assoc-method-resolve.rs)0
-rw-r--r--tests/ui/traits/alias/issue-72415-assoc-const-resolve.rs (renamed from src/test/ui/traits/alias/issue-72415-assoc-const-resolve.rs)0
-rw-r--r--tests/ui/traits/alias/issue-75983.rs (renamed from src/test/ui/traits/alias/issue-75983.rs)0
-rw-r--r--tests/ui/traits/alias/issue-83613.rs (renamed from src/test/ui/traits/alias/issue-83613.rs)0
-rw-r--r--tests/ui/traits/alias/issue-83613.stderr (renamed from src/test/ui/traits/alias/issue-83613.stderr)0
-rw-r--r--tests/ui/traits/alias/maybe-bound.rs (renamed from src/test/ui/traits/alias/maybe-bound.rs)0
-rw-r--r--tests/ui/traits/alias/no-duplicates.rs (renamed from src/test/ui/traits/alias/no-duplicates.rs)0
-rw-r--r--tests/ui/traits/alias/no-duplicates.stderr (renamed from src/test/ui/traits/alias/no-duplicates.stderr)0
-rw-r--r--tests/ui/traits/alias/no-extra-traits.rs (renamed from src/test/ui/traits/alias/no-extra-traits.rs)0
-rw-r--r--tests/ui/traits/alias/no-extra-traits.stderr (renamed from src/test/ui/traits/alias/no-extra-traits.stderr)0
-rw-r--r--tests/ui/traits/alias/object-fail.rs (renamed from src/test/ui/traits/alias/object-fail.rs)0
-rw-r--r--tests/ui/traits/alias/object-fail.stderr (renamed from src/test/ui/traits/alias/object-fail.stderr)3
-rw-r--r--tests/ui/traits/alias/object-wf.rs (renamed from src/test/ui/traits/alias/object-wf.rs)0
-rw-r--r--tests/ui/traits/alias/object.rs (renamed from src/test/ui/traits/alias/object.rs)0
-rw-r--r--tests/ui/traits/alias/only-maybe-bound.rs (renamed from src/test/ui/traits/alias/only-maybe-bound.rs)0
-rw-r--r--tests/ui/traits/alias/only-maybe-bound.stderr (renamed from src/test/ui/traits/alias/only-maybe-bound.stderr)0
-rw-r--r--tests/ui/traits/alias/self-in-const-generics.rs (renamed from src/test/ui/traits/alias/self-in-const-generics.rs)0
-rw-r--r--tests/ui/traits/alias/self-in-const-generics.stderr (renamed from src/test/ui/traits/alias/self-in-const-generics.stderr)0
-rw-r--r--tests/ui/traits/alias/self-in-generics.rs (renamed from src/test/ui/traits/alias/self-in-generics.rs)0
-rw-r--r--tests/ui/traits/alias/self-in-generics.stderr (renamed from src/test/ui/traits/alias/self-in-generics.stderr)0
-rw-r--r--tests/ui/traits/alias/style_lint.rs (renamed from src/test/ui/traits/alias/style_lint.rs)0
-rw-r--r--tests/ui/traits/alias/style_lint.stderr (renamed from src/test/ui/traits/alias/style_lint.stderr)0
-rw-r--r--tests/ui/traits/alias/suggest-trait-alias-instead-of-type.fixed (renamed from src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.fixed)0
-rw-r--r--tests/ui/traits/alias/suggest-trait-alias-instead-of-type.rs (renamed from src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.rs)0
-rw-r--r--tests/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr (renamed from src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr)0
-rw-r--r--tests/ui/traits/alias/syntax-fail.rs (renamed from src/test/ui/traits/alias/syntax-fail.rs)0
-rw-r--r--tests/ui/traits/alias/syntax-fail.stderr (renamed from src/test/ui/traits/alias/syntax-fail.stderr)0
-rw-r--r--tests/ui/traits/alias/syntax.rs (renamed from src/test/ui/traits/alias/syntax.rs)0
-rw-r--r--tests/ui/traits/alias/wf.rs (renamed from src/test/ui/traits/alias/wf.rs)0
-rw-r--r--tests/ui/traits/alias/wf.stderr (renamed from src/test/ui/traits/alias/wf.stderr)0
-rw-r--r--tests/ui/traits/alignment-gep-tup-like-1.rs (renamed from src/test/ui/traits/alignment-gep-tup-like-1.rs)0
-rw-r--r--tests/ui/traits/anon-static-method.rs (renamed from src/test/ui/traits/anon-static-method.rs)0
-rw-r--r--tests/ui/traits/anon_trait_static_method_exe.rs (renamed from src/test/ui/traits/anon_trait_static_method_exe.rs)0
-rw-r--r--tests/ui/traits/as-struct-constructor.rs (renamed from src/test/ui/traits/as-struct-constructor.rs)0
-rw-r--r--tests/ui/traits/as-struct-constructor.stderr (renamed from src/test/ui/traits/as-struct-constructor.stderr)0
-rw-r--r--tests/ui/traits/assignability-trait.rs (renamed from src/test/ui/traits/assignability-trait.rs)0
-rw-r--r--tests/ui/traits/assoc-type-in-superbad.rs16
-rw-r--r--tests/ui/traits/assoc-type-in-superbad.stderr (renamed from src/test/ui/traits/assoc-type-in-superbad.stderr)2
-rw-r--r--tests/ui/traits/assoc-type-in-supertrait.rs (renamed from src/test/ui/traits/assoc-type-in-supertrait.rs)0
-rw-r--r--tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.rs (renamed from src/test/ui/traits/associated_type_bound/assoc_type_bound_with_struct.rs)0
-rw-r--r--tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr (renamed from src/test/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr)30
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-1.rs (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-1.rs)0
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr)0
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-2-ok.rs (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2-ok.rs)0
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-2.rs (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2.rs)0
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-2.stderr (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2.stderr)0
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-3.rs (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-3.rs)0
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-3.stderr (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-3.stderr)0
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-4.rs (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-4.rs)0
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr)0
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-5.rs (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-5.rs)0
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-5.stderr (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-5.stderr)0
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-6.rs (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-6.rs)0
-rw-r--r--tests/ui/traits/associated_type_bound/check-trait-object-bounds-6.stderr (renamed from src/test/ui/traits/associated_type_bound/check-trait-object-bounds-6.stderr)0
-rw-r--r--tests/ui/traits/associated_type_bound/issue-51446.rs (renamed from src/test/ui/traits/associated_type_bound/issue-51446.rs)0
-rw-r--r--tests/ui/traits/astconv-cycle-between-and-type.rs (renamed from src/test/ui/traits/astconv-cycle-between-and-type.rs)0
-rw-r--r--tests/ui/traits/augmented-assignments-trait.rs (renamed from src/test/ui/traits/augmented-assignments-trait.rs)0
-rw-r--r--tests/ui/traits/auxiliary/anon_trait_static_method_lib.rs (renamed from src/test/ui/traits/auxiliary/anon_trait_static_method_lib.rs)0
-rw-r--r--tests/ui/traits/auxiliary/go_trait.rs (renamed from src/test/ui/traits/auxiliary/go_trait.rs)0
-rw-r--r--tests/ui/traits/auxiliary/issue_89119_intercrate_caching.rs (renamed from src/test/ui/traits/auxiliary/issue_89119_intercrate_caching.rs)0
-rw-r--r--tests/ui/traits/auxiliary/trait_safety_lib.rs (renamed from src/test/ui/traits/auxiliary/trait_safety_lib.rs)0
-rw-r--r--tests/ui/traits/auxiliary/traitimpl.rs (renamed from src/test/ui/traits/auxiliary/traitimpl.rs)0
-rw-r--r--tests/ui/traits/bad-method-typaram-kind.rs (renamed from src/test/ui/traits/bad-method-typaram-kind.rs)0
-rw-r--r--tests/ui/traits/bad-method-typaram-kind.stderr (renamed from src/test/ui/traits/bad-method-typaram-kind.stderr)0
-rw-r--r--tests/ui/traits/bad-sized.rs (renamed from src/test/ui/traits/bad-sized.rs)0
-rw-r--r--tests/ui/traits/bad-sized.stderr (renamed from src/test/ui/traits/bad-sized.stderr)9
-rw-r--r--tests/ui/traits/bound/assoc-fn-bound-root-obligation.rs (renamed from src/test/ui/traits/bound/assoc-fn-bound-root-obligation.rs)0
-rw-r--r--tests/ui/traits/bound/assoc-fn-bound-root-obligation.stderr (renamed from src/test/ui/traits/bound/assoc-fn-bound-root-obligation.stderr)0
-rw-r--r--tests/ui/traits/bound/auxiliary/crate_a1.rs (renamed from src/test/ui/traits/bound/auxiliary/crate_a1.rs)0
-rw-r--r--tests/ui/traits/bound/auxiliary/crate_a2.rs (renamed from src/test/ui/traits/bound/auxiliary/crate_a2.rs)0
-rw-r--r--tests/ui/traits/bound/auxiliary/on_structs_and_enums_xc.rs (renamed from src/test/ui/traits/bound/auxiliary/on_structs_and_enums_xc.rs)0
-rw-r--r--tests/ui/traits/bound/basic.rs (renamed from src/test/ui/traits/bound/basic.rs)0
-rw-r--r--tests/ui/traits/bound/generic_trait.rs (renamed from src/test/ui/traits/bound/generic_trait.rs)0
-rw-r--r--tests/ui/traits/bound/impl-comparison-duplicates.rs (renamed from src/test/ui/traits/bound/impl-comparison-duplicates.rs)0
-rw-r--r--tests/ui/traits/bound/in-arc.rs (renamed from src/test/ui/traits/bound/in-arc.rs)0
-rw-r--r--tests/ui/traits/bound/multiple.rs (renamed from src/test/ui/traits/bound/multiple.rs)0
-rw-r--r--tests/ui/traits/bound/not-on-bare-trait.rs (renamed from src/test/ui/traits/bound/not-on-bare-trait.rs)0
-rw-r--r--tests/ui/traits/bound/not-on-bare-trait.stderr (renamed from src/test/ui/traits/bound/not-on-bare-trait.stderr)4
-rw-r--r--tests/ui/traits/bound/not-on-struct.rs (renamed from src/test/ui/traits/bound/not-on-struct.rs)0
-rw-r--r--tests/ui/traits/bound/not-on-struct.stderr (renamed from src/test/ui/traits/bound/not-on-struct.stderr)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-in-fns.rs (renamed from src/test/ui/traits/bound/on-structs-and-enums-in-fns.rs)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-in-fns.stderr (renamed from src/test/ui/traits/bound/on-structs-and-enums-in-fns.stderr)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-in-impls.rs (renamed from src/test/ui/traits/bound/on-structs-and-enums-in-impls.rs)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-in-impls.stderr (renamed from src/test/ui/traits/bound/on-structs-and-enums-in-impls.stderr)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-locals.rs (renamed from src/test/ui/traits/bound/on-structs-and-enums-locals.rs)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-locals.stderr (renamed from src/test/ui/traits/bound/on-structs-and-enums-locals.stderr)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-rpass.rs (renamed from src/test/ui/traits/bound/on-structs-and-enums-rpass.rs)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-static.rs (renamed from src/test/ui/traits/bound/on-structs-and-enums-static.rs)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-static.stderr (renamed from src/test/ui/traits/bound/on-structs-and-enums-static.stderr)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-xc.rs (renamed from src/test/ui/traits/bound/on-structs-and-enums-xc.rs)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-xc.stderr (renamed from src/test/ui/traits/bound/on-structs-and-enums-xc.stderr)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-xc1.rs (renamed from src/test/ui/traits/bound/on-structs-and-enums-xc1.rs)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums-xc1.stderr (renamed from src/test/ui/traits/bound/on-structs-and-enums-xc1.stderr)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums.rs (renamed from src/test/ui/traits/bound/on-structs-and-enums.rs)0
-rw-r--r--tests/ui/traits/bound/on-structs-and-enums.stderr (renamed from src/test/ui/traits/bound/on-structs-and-enums.stderr)0
-rw-r--r--tests/ui/traits/bound/recursion.rs (renamed from src/test/ui/traits/bound/recursion.rs)0
-rw-r--r--tests/ui/traits/bound/same-crate-name.rs (renamed from src/test/ui/traits/bound/same-crate-name.rs)0
-rw-r--r--tests/ui/traits/bound/same-crate-name.stderr (renamed from src/test/ui/traits/bound/same-crate-name.stderr)0
-rw-r--r--tests/ui/traits/bound/sugar.rs (renamed from src/test/ui/traits/bound/sugar.rs)0
-rw-r--r--tests/ui/traits/bound/sugar.stderr (renamed from src/test/ui/traits/bound/sugar.stderr)0
-rw-r--r--tests/ui/traits/bug-7183-generics.rs (renamed from src/test/ui/traits/bug-7183-generics.rs)0
-rw-r--r--tests/ui/traits/bug-7295.rs (renamed from src/test/ui/traits/bug-7295.rs)0
-rw-r--r--tests/ui/traits/cache-issue-18209.rs (renamed from src/test/ui/traits/cache-issue-18209.rs)0
-rw-r--r--tests/ui/traits/cache-reached-depth-ice.rs (renamed from src/test/ui/traits/cache-reached-depth-ice.rs)0
-rw-r--r--tests/ui/traits/cache-reached-depth-ice.stderr (renamed from src/test/ui/traits/cache-reached-depth-ice.stderr)0
-rw-r--r--tests/ui/traits/coercion-generic-bad.rs (renamed from src/test/ui/traits/coercion-generic-bad.rs)0
-rw-r--r--tests/ui/traits/coercion-generic-bad.stderr (renamed from src/test/ui/traits/coercion-generic-bad.stderr)0
-rw-r--r--tests/ui/traits/coercion-generic-regions.rs (renamed from src/test/ui/traits/coercion-generic-regions.rs)0
-rw-r--r--tests/ui/traits/coercion-generic-regions.stderr (renamed from src/test/ui/traits/coercion-generic-regions.stderr)0
-rw-r--r--tests/ui/traits/coercion-generic.rs (renamed from src/test/ui/traits/coercion-generic.rs)0
-rw-r--r--tests/ui/traits/coercion.rs (renamed from src/test/ui/traits/coercion.rs)0
-rw-r--r--tests/ui/traits/composition-trivial.rs (renamed from src/test/ui/traits/composition-trivial.rs)0
-rw-r--r--tests/ui/traits/conditional-dispatch.rs (renamed from src/test/ui/traits/conditional-dispatch.rs)0
-rw-r--r--tests/ui/traits/conditional-model-fn.rs (renamed from src/test/ui/traits/conditional-model-fn.rs)0
-rw-r--r--tests/ui/traits/conservative_impl_trait.rs (renamed from src/test/ui/traits/conservative_impl_trait.rs)0
-rw-r--r--tests/ui/traits/copy-guessing.rs (renamed from src/test/ui/traits/copy-guessing.rs)0
-rw-r--r--tests/ui/traits/copy-impl-cannot-normalize.rs (renamed from src/test/ui/traits/copy-impl-cannot-normalize.rs)0
-rw-r--r--tests/ui/traits/copy-impl-cannot-normalize.stderr24
-rw-r--r--tests/ui/traits/copy-is-not-modulo-regions.not_static.stderr22
-rw-r--r--tests/ui/traits/copy-is-not-modulo-regions.rs19
-rw-r--r--tests/ui/traits/copy-requires-self-wf.rs14
-rw-r--r--tests/ui/traits/cycle-cache-err-60010.rs (renamed from src/test/ui/traits/cycle-cache-err-60010.rs)0
-rw-r--r--tests/ui/traits/cycle-cache-err-60010.stderr (renamed from src/test/ui/traits/cycle-cache-err-60010.stderr)6
-rw-r--r--tests/ui/traits/cycle-generic-bound.rs (renamed from src/test/ui/traits/cycle-generic-bound.rs)0
-rw-r--r--tests/ui/traits/cycle-type-trait.rs (renamed from src/test/ui/traits/cycle-type-trait.rs)0
-rw-r--r--tests/ui/traits/default-method/auxiliary/xc.rs (renamed from src/test/ui/traits/default-method/auxiliary/xc.rs)0
-rw-r--r--tests/ui/traits/default-method/auxiliary/xc_2.rs (renamed from src/test/ui/traits/default-method/auxiliary/xc_2.rs)0
-rw-r--r--tests/ui/traits/default-method/bound-subst.rs (renamed from src/test/ui/traits/default-method/bound-subst.rs)0
-rw-r--r--tests/ui/traits/default-method/bound-subst2.rs (renamed from src/test/ui/traits/default-method/bound-subst2.rs)0
-rw-r--r--tests/ui/traits/default-method/bound-subst3.rs (renamed from src/test/ui/traits/default-method/bound-subst3.rs)0
-rw-r--r--tests/ui/traits/default-method/bound-subst4.rs (renamed from src/test/ui/traits/default-method/bound-subst4.rs)0
-rw-r--r--tests/ui/traits/default-method/bound.rs (renamed from src/test/ui/traits/default-method/bound.rs)0
-rw-r--r--tests/ui/traits/default-method/macro.rs (renamed from src/test/ui/traits/default-method/macro.rs)0
-rw-r--r--tests/ui/traits/default-method/mut.rs (renamed from src/test/ui/traits/default-method/mut.rs)0
-rw-r--r--tests/ui/traits/default-method/rustc_must_implement_one_of.rs (renamed from src/test/ui/traits/default-method/rustc_must_implement_one_of.rs)0
-rw-r--r--tests/ui/traits/default-method/rustc_must_implement_one_of.stderr (renamed from src/test/ui/traits/default-method/rustc_must_implement_one_of.stderr)0
-rw-r--r--tests/ui/traits/default-method/rustc_must_implement_one_of_duplicates.rs19
-rw-r--r--tests/ui/traits/default-method/rustc_must_implement_one_of_duplicates.stderr34
-rw-r--r--tests/ui/traits/default-method/rustc_must_implement_one_of_gated.rs (renamed from src/test/ui/traits/default-method/rustc_must_implement_one_of_gated.rs)0
-rw-r--r--tests/ui/traits/default-method/rustc_must_implement_one_of_gated.stderr (renamed from src/test/ui/traits/default-method/rustc_must_implement_one_of_gated.stderr)0
-rw-r--r--tests/ui/traits/default-method/rustc_must_implement_one_of_misuse.rs46
-rw-r--r--tests/ui/traits/default-method/rustc_must_implement_one_of_misuse.stderr (renamed from src/test/ui/traits/default-method/rustc_must_implement_one_of_misuse.stderr)18
-rw-r--r--tests/ui/traits/default-method/self.rs (renamed from src/test/ui/traits/default-method/self.rs)0
-rw-r--r--tests/ui/traits/default-method/supervtable.rs (renamed from src/test/ui/traits/default-method/supervtable.rs)0
-rw-r--r--tests/ui/traits/default-method/trivial.rs (renamed from src/test/ui/traits/default-method/trivial.rs)0
-rw-r--r--tests/ui/traits/default-method/xc-2.rs (renamed from src/test/ui/traits/default-method/xc-2.rs)0
-rw-r--r--tests/ui/traits/default-method/xc.rs (renamed from src/test/ui/traits/default-method/xc.rs)0
-rw-r--r--tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.rs (renamed from src/test/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.rs)0
-rw-r--r--tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr (renamed from src/test/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr)0
-rw-r--r--tests/ui/traits/duplicate-methods.rs (renamed from src/test/ui/traits/duplicate-methods.rs)0
-rw-r--r--tests/ui/traits/duplicate-methods.stderr (renamed from src/test/ui/traits/duplicate-methods.stderr)0
-rw-r--r--tests/ui/traits/dyn-trait.rs (renamed from src/test/ui/traits/dyn-trait.rs)0
-rw-r--r--tests/ui/traits/early-vtbl-resolution.rs (renamed from src/test/ui/traits/early-vtbl-resolution.rs)0
-rw-r--r--tests/ui/traits/elaborate-type-region.rs (renamed from src/test/ui/traits/elaborate-type-region.rs)0
-rw-r--r--tests/ui/traits/false-ambiguity-where-clause-builtin-bound.rs (renamed from src/test/ui/traits/false-ambiguity-where-clause-builtin-bound.rs)0
-rw-r--r--tests/ui/traits/fmt-pointer-trait.rs (renamed from src/test/ui/traits/fmt-pointer-trait.rs)0
-rw-r--r--tests/ui/traits/fn-trait-cast-diagnostic.rs26
-rw-r--r--tests/ui/traits/fn-trait-cast-diagnostic.stderr43
-rw-r--r--tests/ui/traits/generic.rs (renamed from src/test/ui/traits/generic.rs)0
-rw-r--r--tests/ui/traits/ignore-err-impls.rs9
-rw-r--r--tests/ui/traits/ignore-err-impls.stderr14
-rw-r--r--tests/ui/traits/impl-1.rs (renamed from src/test/ui/traits/impl-1.rs)0
-rw-r--r--tests/ui/traits/impl-1.stderr (renamed from src/test/ui/traits/impl-1.stderr)0
-rw-r--r--tests/ui/traits/impl-2.rs (renamed from src/test/ui/traits/impl-2.rs)0
-rw-r--r--tests/ui/traits/impl-bounds-checking.rs (renamed from src/test/ui/traits/impl-bounds-checking.rs)0
-rw-r--r--tests/ui/traits/impl-bounds-checking.stderr (renamed from src/test/ui/traits/impl-bounds-checking.stderr)4
-rw-r--r--tests/ui/traits/impl-can-not-have-untraitful-items.rs (renamed from src/test/ui/traits/impl-can-not-have-untraitful-items.rs)0
-rw-r--r--tests/ui/traits/impl-can-not-have-untraitful-items.stderr (renamed from src/test/ui/traits/impl-can-not-have-untraitful-items.stderr)0
-rw-r--r--tests/ui/traits/impl-different-num-params.rs (renamed from src/test/ui/traits/impl-different-num-params.rs)0
-rw-r--r--tests/ui/traits/impl-different-num-params.stderr (renamed from src/test/ui/traits/impl-different-num-params.stderr)0
-rw-r--r--tests/ui/traits/impl-evaluation-order.rs (renamed from src/test/ui/traits/impl-evaluation-order.rs)0
-rw-r--r--tests/ui/traits/impl-for-module.rs (renamed from src/test/ui/traits/impl-for-module.rs)0
-rw-r--r--tests/ui/traits/impl-for-module.stderr (renamed from src/test/ui/traits/impl-for-module.stderr)0
-rw-r--r--tests/ui/traits/impl-implicit-trait.rs (renamed from src/test/ui/traits/impl-implicit-trait.rs)0
-rw-r--r--tests/ui/traits/impl-inherent-prefer-over-trait.rs (renamed from src/test/ui/traits/impl-inherent-prefer-over-trait.rs)0
-rw-r--r--tests/ui/traits/impl-method-mismatch.rs (renamed from src/test/ui/traits/impl-method-mismatch.rs)4
-rw-r--r--tests/ui/traits/impl-method-mismatch.stderr (renamed from src/test/ui/traits/impl-method-mismatch.stderr)4
-rw-r--r--tests/ui/traits/impl-object-overlap-issue-23853.rs (renamed from src/test/ui/traits/impl-object-overlap-issue-23853.rs)0
-rw-r--r--tests/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.rs (renamed from src/test/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.rs)0
-rw-r--r--tests/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.stderr (renamed from src/test/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.stderr)8
-rw-r--r--tests/ui/traits/impl.rs (renamed from src/test/ui/traits/impl.rs)0
-rw-r--r--tests/ui/traits/impl_trait_as_trait_return_position.rs (renamed from src/test/ui/traits/impl_trait_as_trait_return_position.rs)0
-rw-r--r--tests/ui/traits/inductive-overflow/lifetime.rs (renamed from src/test/ui/traits/inductive-overflow/lifetime.rs)1
-rw-r--r--tests/ui/traits/inductive-overflow/lifetime.stderr (renamed from src/test/ui/traits/inductive-overflow/lifetime.stderr)8
-rw-r--r--tests/ui/traits/inductive-overflow/simultaneous.rs (renamed from src/test/ui/traits/inductive-overflow/simultaneous.rs)0
-rw-r--r--tests/ui/traits/inductive-overflow/simultaneous.stderr (renamed from src/test/ui/traits/inductive-overflow/simultaneous.stderr)4
-rw-r--r--tests/ui/traits/inductive-overflow/supertrait-auto-trait.rs (renamed from src/test/ui/traits/inductive-overflow/supertrait-auto-trait.rs)0
-rw-r--r--tests/ui/traits/inductive-overflow/supertrait-auto-trait.stderr (renamed from src/test/ui/traits/inductive-overflow/supertrait-auto-trait.stderr)0
-rw-r--r--tests/ui/traits/inductive-overflow/supertrait.rs (renamed from src/test/ui/traits/inductive-overflow/supertrait.rs)0
-rw-r--r--tests/ui/traits/inductive-overflow/supertrait.stderr (renamed from src/test/ui/traits/inductive-overflow/supertrait.stderr)4
-rw-r--r--tests/ui/traits/inductive-overflow/two-traits.rs (renamed from src/test/ui/traits/inductive-overflow/two-traits.rs)0
-rw-r--r--tests/ui/traits/inductive-overflow/two-traits.stderr (renamed from src/test/ui/traits/inductive-overflow/two-traits.stderr)0
-rw-r--r--tests/ui/traits/infer-from-object-issue-26952.rs (renamed from src/test/ui/traits/infer-from-object-issue-26952.rs)0
-rw-r--r--tests/ui/traits/inherent-method-order.rs (renamed from src/test/ui/traits/inherent-method-order.rs)0
-rw-r--r--tests/ui/traits/inheritance/auto-xc-2.rs (renamed from src/test/ui/traits/inheritance/auto-xc-2.rs)0
-rw-r--r--tests/ui/traits/inheritance/auto-xc.rs (renamed from src/test/ui/traits/inheritance/auto-xc.rs)0
-rw-r--r--tests/ui/traits/inheritance/auto.rs (renamed from src/test/ui/traits/inheritance/auto.rs)0
-rw-r--r--tests/ui/traits/inheritance/auxiliary/auto_xc.rs (renamed from src/test/ui/traits/inheritance/auxiliary/auto_xc.rs)0
-rw-r--r--tests/ui/traits/inheritance/auxiliary/auto_xc_2.rs (renamed from src/test/ui/traits/inheritance/auxiliary/auto_xc_2.rs)0
-rw-r--r--tests/ui/traits/inheritance/auxiliary/overloading_xc.rs (renamed from src/test/ui/traits/inheritance/auxiliary/overloading_xc.rs)0
-rw-r--r--tests/ui/traits/inheritance/auxiliary/xc_call.rs (renamed from src/test/ui/traits/inheritance/auxiliary/xc_call.rs)0
-rw-r--r--tests/ui/traits/inheritance/basic.rs (renamed from src/test/ui/traits/inheritance/basic.rs)0
-rw-r--r--tests/ui/traits/inheritance/call-bound-inherited.rs (renamed from src/test/ui/traits/inheritance/call-bound-inherited.rs)0
-rw-r--r--tests/ui/traits/inheritance/call-bound-inherited2.rs (renamed from src/test/ui/traits/inheritance/call-bound-inherited2.rs)0
-rw-r--r--tests/ui/traits/inheritance/cast-without-call-to-supertrait.rs (renamed from src/test/ui/traits/inheritance/cast-without-call-to-supertrait.rs)0
-rw-r--r--tests/ui/traits/inheritance/cast.rs (renamed from src/test/ui/traits/inheritance/cast.rs)0
-rw-r--r--tests/ui/traits/inheritance/cross-trait-call-xc.rs (renamed from src/test/ui/traits/inheritance/cross-trait-call-xc.rs)0
-rw-r--r--tests/ui/traits/inheritance/cross-trait-call.rs (renamed from src/test/ui/traits/inheritance/cross-trait-call.rs)0
-rw-r--r--tests/ui/traits/inheritance/diamond.rs (renamed from src/test/ui/traits/inheritance/diamond.rs)0
-rw-r--r--tests/ui/traits/inheritance/multiple-inheritors.rs (renamed from src/test/ui/traits/inheritance/multiple-inheritors.rs)0
-rw-r--r--tests/ui/traits/inheritance/multiple-params.rs (renamed from src/test/ui/traits/inheritance/multiple-params.rs)0
-rw-r--r--tests/ui/traits/inheritance/num.rs (renamed from src/test/ui/traits/inheritance/num.rs)0
-rw-r--r--tests/ui/traits/inheritance/num0.rs (renamed from src/test/ui/traits/inheritance/num0.rs)0
-rw-r--r--tests/ui/traits/inheritance/num1.rs (renamed from src/test/ui/traits/inheritance/num1.rs)0
-rw-r--r--tests/ui/traits/inheritance/num2.rs (renamed from src/test/ui/traits/inheritance/num2.rs)0
-rw-r--r--tests/ui/traits/inheritance/num3.rs (renamed from src/test/ui/traits/inheritance/num3.rs)0
-rw-r--r--tests/ui/traits/inheritance/num5.rs (renamed from src/test/ui/traits/inheritance/num5.rs)0
-rw-r--r--tests/ui/traits/inheritance/overloading-simple.rs (renamed from src/test/ui/traits/inheritance/overloading-simple.rs)0
-rw-r--r--tests/ui/traits/inheritance/overloading-xc-exe.rs (renamed from src/test/ui/traits/inheritance/overloading-xc-exe.rs)0
-rw-r--r--tests/ui/traits/inheritance/overloading.rs (renamed from src/test/ui/traits/inheritance/overloading.rs)0
-rw-r--r--tests/ui/traits/inheritance/repeated-supertrait-ambig.rs (renamed from src/test/ui/traits/inheritance/repeated-supertrait-ambig.rs)0
-rw-r--r--tests/ui/traits/inheritance/repeated-supertrait-ambig.stderr (renamed from src/test/ui/traits/inheritance/repeated-supertrait-ambig.stderr)0
-rw-r--r--tests/ui/traits/inheritance/repeated-supertrait.rs (renamed from src/test/ui/traits/inheritance/repeated-supertrait.rs)0
-rw-r--r--tests/ui/traits/inheritance/self-in-supertype.rs (renamed from src/test/ui/traits/inheritance/self-in-supertype.rs)0
-rw-r--r--tests/ui/traits/inheritance/self.rs (renamed from src/test/ui/traits/inheritance/self.rs)0
-rw-r--r--tests/ui/traits/inheritance/simple.rs (renamed from src/test/ui/traits/inheritance/simple.rs)0
-rw-r--r--tests/ui/traits/inheritance/static.rs (renamed from src/test/ui/traits/inheritance/static.rs)0
-rw-r--r--tests/ui/traits/inheritance/static2.rs (renamed from src/test/ui/traits/inheritance/static2.rs)0
-rw-r--r--tests/ui/traits/inheritance/subst.rs (renamed from src/test/ui/traits/inheritance/subst.rs)0
-rw-r--r--tests/ui/traits/inheritance/subst2.rs (renamed from src/test/ui/traits/inheritance/subst2.rs)0
-rw-r--r--tests/ui/traits/inheritance/visibility.rs (renamed from src/test/ui/traits/inheritance/visibility.rs)0
-rw-r--r--tests/ui/traits/invalid_operator_trait.rs (renamed from src/test/ui/traits/invalid_operator_trait.rs)0
-rw-r--r--tests/ui/traits/invalid_operator_trait.stderr (renamed from src/test/ui/traits/invalid_operator_trait.stderr)0
-rw-r--r--tests/ui/traits/issue-102989.rs (renamed from src/test/ui/traits/issue-102989.rs)0
-rw-r--r--tests/ui/traits/issue-102989.stderr (renamed from src/test/ui/traits/issue-102989.stderr)0
-rw-r--r--tests/ui/traits/issue-104322.rs (renamed from src/test/ui/traits/issue-104322.rs)0
-rw-r--r--tests/ui/traits/issue-106072.rs5
-rw-r--r--tests/ui/traits/issue-106072.stderr30
-rw-r--r--tests/ui/traits/issue-18400.rs (renamed from src/test/ui/traits/issue-18400.rs)0
-rw-r--r--tests/ui/traits/issue-18400.stderr (renamed from src/test/ui/traits/issue-18400.stderr)4
-rw-r--r--tests/ui/traits/issue-18412.rs (renamed from src/test/ui/traits/issue-18412.rs)0
-rw-r--r--tests/ui/traits/issue-20692.rs (renamed from src/test/ui/traits/issue-20692.rs)0
-rw-r--r--tests/ui/traits/issue-20692.stderr (renamed from src/test/ui/traits/issue-20692.stderr)0
-rw-r--r--tests/ui/traits/issue-22019.rs (renamed from src/test/ui/traits/issue-22019.rs)0
-rw-r--r--tests/ui/traits/issue-22110.rs (renamed from src/test/ui/traits/issue-22110.rs)0
-rw-r--r--tests/ui/traits/issue-22655.rs (renamed from src/test/ui/traits/issue-22655.rs)0
-rw-r--r--tests/ui/traits/issue-23003-overflow.rs (renamed from src/test/ui/traits/issue-23003-overflow.rs)0
-rw-r--r--tests/ui/traits/issue-23003.rs (renamed from src/test/ui/traits/issue-23003.rs)0
-rw-r--r--tests/ui/traits/issue-23825.rs (renamed from src/test/ui/traits/issue-23825.rs)0
-rw-r--r--tests/ui/traits/issue-24010.rs (renamed from src/test/ui/traits/issue-24010.rs)0
-rw-r--r--tests/ui/traits/issue-26339.rs (renamed from src/test/ui/traits/issue-26339.rs)0
-rw-r--r--tests/ui/traits/issue-28576.rs (renamed from src/test/ui/traits/issue-28576.rs)0
-rw-r--r--tests/ui/traits/issue-28576.stderr (renamed from src/test/ui/traits/issue-28576.stderr)0
-rw-r--r--tests/ui/traits/issue-32963.rs (renamed from src/test/ui/traits/issue-32963.rs)0
-rw-r--r--tests/ui/traits/issue-32963.stderr (renamed from src/test/ui/traits/issue-32963.stderr)0
-rw-r--r--tests/ui/traits/issue-33140-hack-boundaries.rs (renamed from src/test/ui/traits/issue-33140-hack-boundaries.rs)0
-rw-r--r--tests/ui/traits/issue-33140-hack-boundaries.stderr (renamed from src/test/ui/traits/issue-33140-hack-boundaries.stderr)0
-rw-r--r--tests/ui/traits/issue-33140.rs (renamed from src/test/ui/traits/issue-33140.rs)0
-rw-r--r--tests/ui/traits/issue-33140.stderr (renamed from src/test/ui/traits/issue-33140.stderr)0
-rw-r--r--tests/ui/traits/issue-35869.rs (renamed from src/test/ui/traits/issue-35869.rs)0
-rw-r--r--tests/ui/traits/issue-35869.stderr (renamed from src/test/ui/traits/issue-35869.stderr)16
-rw-r--r--tests/ui/traits/issue-3683.rs (renamed from src/test/ui/traits/issue-3683.rs)0
-rw-r--r--tests/ui/traits/issue-38033.rs (renamed from src/test/ui/traits/issue-38033.rs)0
-rw-r--r--tests/ui/traits/issue-38404.rs (renamed from src/test/ui/issues/issue-38404.rs)0
-rw-r--r--tests/ui/traits/issue-38404.stderr (renamed from src/test/ui/issues/issue-38404.stderr)0
-rw-r--r--tests/ui/traits/issue-38604.rs (renamed from src/test/ui/traits/issue-38604.rs)0
-rw-r--r--tests/ui/traits/issue-38604.stderr (renamed from src/test/ui/traits/issue-38604.stderr)0
-rw-r--r--tests/ui/traits/issue-3973.rs (renamed from src/test/ui/traits/issue-3973.rs)0
-rw-r--r--tests/ui/traits/issue-3973.stderr (renamed from src/test/ui/traits/issue-3973.stderr)0
-rw-r--r--tests/ui/traits/issue-4107.rs (renamed from src/test/ui/traits/issue-4107.rs)0
-rw-r--r--tests/ui/traits/issue-43132.rs (renamed from src/test/ui/traits/issue-43132.rs)0
-rw-r--r--tests/ui/traits/issue-43784-supertrait.rs (renamed from src/test/ui/traits/issue-43784-supertrait.rs)0
-rw-r--r--tests/ui/traits/issue-43784-supertrait.stderr24
-rw-r--r--tests/ui/traits/issue-50480.rs (renamed from src/test/ui/issues/issue-50480.rs)2
-rw-r--r--tests/ui/traits/issue-50480.stderr92
-rw-r--r--tests/ui/traits/issue-52893.rs (renamed from src/test/ui/traits/issue-52893.rs)0
-rw-r--r--tests/ui/traits/issue-52893.stderr29
-rw-r--r--tests/ui/traits/issue-56202.rs (renamed from src/test/ui/traits/issue-56202.rs)0
-rw-r--r--tests/ui/traits/issue-56488.rs (renamed from src/test/ui/traits/issue-56488.rs)0
-rw-r--r--tests/ui/traits/issue-59029-1.rs (renamed from src/test/ui/traits/issue-59029-1.rs)0
-rw-r--r--tests/ui/traits/issue-59029-1.stderr (renamed from src/test/ui/traits/issue-59029-1.stderr)0
-rw-r--r--tests/ui/traits/issue-59029-2.rs (renamed from src/test/ui/traits/issue-59029-2.rs)0
-rw-r--r--tests/ui/traits/issue-6128.rs (renamed from src/test/ui/traits/issue-6128.rs)0
-rw-r--r--tests/ui/traits/issue-6334.rs (renamed from src/test/ui/traits/issue-6334.rs)0
-rw-r--r--tests/ui/traits/issue-65284-suggest-generic-trait-bound.rs (renamed from src/test/ui/traits/issue-65284-suggest-generic-trait-bound.rs)0
-rw-r--r--tests/ui/traits/issue-65284-suggest-generic-trait-bound.stderr (renamed from src/test/ui/traits/issue-65284-suggest-generic-trait-bound.stderr)0
-rw-r--r--tests/ui/traits/issue-65673.rs (renamed from src/test/ui/traits/issue-65673.rs)0
-rw-r--r--tests/ui/traits/issue-65673.stderr (renamed from src/test/ui/traits/issue-65673.stderr)0
-rw-r--r--tests/ui/traits/issue-68295.rs (renamed from src/test/ui/traits/issue-68295.rs)0
-rw-r--r--tests/ui/traits/issue-68295.stderr (renamed from src/test/ui/traits/issue-68295.stderr)0
-rw-r--r--tests/ui/traits/issue-7013.rs (renamed from src/test/ui/traits/issue-7013.rs)0
-rw-r--r--tests/ui/traits/issue-7013.stderr (renamed from src/test/ui/traits/issue-7013.stderr)0
-rw-r--r--tests/ui/traits/issue-70944.rs (renamed from src/test/ui/traits/issue-70944.rs)0
-rw-r--r--tests/ui/traits/issue-71036.rs (renamed from src/test/ui/traits/issue-71036.rs)0
-rw-r--r--tests/ui/traits/issue-71036.stderr (renamed from src/test/ui/traits/issue-71036.stderr)0
-rw-r--r--tests/ui/traits/issue-71136.rs (renamed from src/test/ui/traits/issue-71136.rs)0
-rw-r--r--tests/ui/traits/issue-71136.stderr (renamed from src/test/ui/traits/issue-71136.stderr)0
-rw-r--r--tests/ui/traits/issue-72410.rs (renamed from src/test/ui/traits/issue-72410.rs)0
-rw-r--r--tests/ui/traits/issue-72410.stderr (renamed from src/test/ui/traits/issue-72410.stderr)0
-rw-r--r--tests/ui/traits/issue-72455.rs (renamed from src/test/ui/traits/issue-72455.rs)0
-rw-r--r--tests/ui/traits/issue-75627.rs (renamed from src/test/ui/traits/issue-75627.rs)0
-rw-r--r--tests/ui/traits/issue-75627.stderr14
-rw-r--r--tests/ui/traits/issue-77982.rs (renamed from src/test/ui/traits/issue-77982.rs)0
-rw-r--r--tests/ui/traits/issue-77982.stderr (renamed from src/test/ui/traits/issue-77982.stderr)13
-rw-r--r--tests/ui/traits/issue-78372.rs (renamed from src/test/ui/traits/issue-78372.rs)0
-rw-r--r--tests/ui/traits/issue-78372.stderr (renamed from src/test/ui/traits/issue-78372.stderr)9
-rw-r--r--tests/ui/traits/issue-78632.rs (renamed from src/test/ui/traits/issue-78632.rs)0
-rw-r--r--tests/ui/traits/issue-79458.rs (renamed from src/test/ui/traits/issue-79458.rs)0
-rw-r--r--tests/ui/traits/issue-79458.stderr (renamed from src/test/ui/traits/issue-79458.stderr)0
-rw-r--r--tests/ui/traits/issue-8153.rs (renamed from src/test/ui/traits/issue-8153.rs)0
-rw-r--r--tests/ui/traits/issue-8153.stderr (renamed from src/test/ui/traits/issue-8153.stderr)0
-rw-r--r--tests/ui/traits/issue-82830.rs (renamed from src/test/ui/traits/issue-82830.rs)0
-rw-r--r--tests/ui/traits/issue-83538-tainted-cache-after-cycle.rs (renamed from src/test/ui/traits/issue-83538-tainted-cache-after-cycle.rs)0
-rw-r--r--tests/ui/traits/issue-83538-tainted-cache-after-cycle.stderr (renamed from src/test/ui/traits/issue-83538-tainted-cache-after-cycle.stderr)0
-rw-r--r--tests/ui/traits/issue-84399-bad-fresh-caching.rs (renamed from src/test/ui/traits/issue-84399-bad-fresh-caching.rs)0
-rw-r--r--tests/ui/traits/issue-85360-eval-obligation-ice.rs (renamed from src/test/ui/traits/issue-85360-eval-obligation-ice.rs)0
-rw-r--r--tests/ui/traits/issue-85360-eval-obligation-ice.stderr (renamed from src/test/ui/traits/issue-85360-eval-obligation-ice.stderr)0
-rw-r--r--tests/ui/traits/issue-85735.rs (renamed from src/test/ui/traits/issue-85735.rs)0
-rw-r--r--tests/ui/traits/issue-85735.stderr18
-rw-r--r--tests/ui/traits/issue-87558.rs (renamed from src/test/ui/traits/issue-87558.rs)0
-rw-r--r--tests/ui/traits/issue-87558.stderr (renamed from src/test/ui/traits/issue-87558.stderr)0
-rw-r--r--tests/ui/traits/issue-89119.rs (renamed from src/test/ui/traits/issue-89119.rs)0
-rw-r--r--tests/ui/traits/issue-90195-2.rs (renamed from src/test/ui/traits/issue-90195-2.rs)0
-rw-r--r--tests/ui/traits/issue-90195.rs (renamed from src/test/ui/traits/issue-90195.rs)0
-rw-r--r--tests/ui/traits/issue-90662-projection-caching.rs (renamed from src/test/ui/traits/issue-90662-projection-caching.rs)0
-rw-r--r--tests/ui/traits/issue-91594.rs (renamed from src/test/ui/traits/issue-91594.rs)0
-rw-r--r--tests/ui/traits/issue-91594.stderr18
-rw-r--r--tests/ui/traits/issue-91949-hangs-on-recursion.rs (renamed from src/test/ui/traits/issue-91949-hangs-on-recursion.rs)0
-rw-r--r--tests/ui/traits/issue-91949-hangs-on-recursion.stderr (renamed from src/test/ui/traits/issue-91949-hangs-on-recursion.stderr)0
-rw-r--r--tests/ui/traits/issue-92292.rs (renamed from src/test/ui/traits/issue-92292.rs)0
-rw-r--r--tests/ui/traits/issue-9394-inherited-calls.rs (renamed from src/test/ui/traits/issue-9394-inherited-calls.rs)0
-rw-r--r--tests/ui/traits/issue-95311.rs (renamed from src/test/ui/traits/issue-95311.rs)0
-rw-r--r--tests/ui/traits/issue-95898.rs (renamed from src/test/ui/traits/issue-95898.rs)0
-rw-r--r--tests/ui/traits/issue-95898.stderr (renamed from src/test/ui/traits/issue-95898.stderr)0
-rw-r--r--tests/ui/traits/issue-96664.rs (renamed from src/test/ui/traits/issue-96664.rs)0
-rw-r--r--tests/ui/traits/issue-96665.rs (renamed from src/test/ui/traits/issue-96665.rs)0
-rw-r--r--tests/ui/traits/issue-97576.rs (renamed from src/test/ui/traits/issue-97576.rs)0
-rw-r--r--tests/ui/traits/issue-97576.stderr11
-rw-r--r--tests/ui/traits/issue-97695-double-trivial-bound.rs (renamed from src/test/ui/traits/issue-97695-double-trivial-bound.rs)0
-rw-r--r--tests/ui/traits/issue-99875.rs (renamed from src/test/ui/issues/issue-99875.rs)0
-rw-r--r--tests/ui/traits/issue-99875.stderr (renamed from src/test/ui/issues/issue-99875.stderr)5
-rw-r--r--tests/ui/traits/item-inside-macro.rs (renamed from src/test/ui/traits/item-inside-macro.rs)0
-rw-r--r--tests/ui/traits/item-privacy.rs (renamed from src/test/ui/traits/item-privacy.rs)0
-rw-r--r--tests/ui/traits/item-privacy.stderr (renamed from src/test/ui/traits/item-privacy.stderr)11
-rw-r--r--tests/ui/traits/kindck-owned-contains-1.rs (renamed from src/test/ui/traits/kindck-owned-contains-1.rs)0
-rw-r--r--tests/ui/traits/map-types.rs (renamed from src/test/ui/traits/map-types.rs)0
-rw-r--r--tests/ui/traits/map-types.stderr (renamed from src/test/ui/traits/map-types.stderr)0
-rw-r--r--tests/ui/traits/matching-lifetimes.rs (renamed from src/test/ui/traits/matching-lifetimes.rs)0
-rw-r--r--tests/ui/traits/matching-lifetimes.stderr (renamed from src/test/ui/traits/matching-lifetimes.stderr)8
-rw-r--r--tests/ui/traits/method-private.rs (renamed from src/test/ui/traits/method-private.rs)0
-rw-r--r--tests/ui/traits/method-private.stderr (renamed from src/test/ui/traits/method-private.stderr)0
-rw-r--r--tests/ui/traits/monad.rs (renamed from src/test/ui/traits/monad.rs)0
-rw-r--r--tests/ui/traits/monomorphized-callees-with-ty-params-3314.rs (renamed from src/test/ui/traits/monomorphized-callees-with-ty-params-3314.rs)0
-rw-r--r--tests/ui/traits/multidispatch-bad.rs (renamed from src/test/ui/traits/multidispatch-bad.rs)0
-rw-r--r--tests/ui/traits/multidispatch-bad.stderr (renamed from src/test/ui/traits/multidispatch-bad.stderr)0
-rw-r--r--tests/ui/traits/multidispatch-conditional-impl-not-considered.rs (renamed from src/test/ui/traits/multidispatch-conditional-impl-not-considered.rs)0
-rw-r--r--tests/ui/traits/multidispatch-convert-ambig-dest.rs (renamed from src/test/ui/traits/multidispatch-convert-ambig-dest.rs)0
-rw-r--r--tests/ui/traits/multidispatch-convert-ambig-dest.stderr (renamed from src/test/ui/traits/multidispatch-convert-ambig-dest.stderr)0
-rw-r--r--tests/ui/traits/multidispatch-infer-convert-target.rs (renamed from src/test/ui/traits/multidispatch-infer-convert-target.rs)0
-rw-r--r--tests/ui/traits/multidispatch1.rs (renamed from src/test/ui/traits/multidispatch1.rs)0
-rw-r--r--tests/ui/traits/multidispatch2.rs (renamed from src/test/ui/traits/multidispatch2.rs)0
-rw-r--r--tests/ui/traits/mutual-recursion-issue-75860.rs (renamed from src/test/ui/traits/mutual-recursion-issue-75860.rs)0
-rw-r--r--tests/ui/traits/mutual-recursion-issue-75860.stderr (renamed from src/test/ui/traits/mutual-recursion-issue-75860.stderr)3
-rw-r--r--tests/ui/traits/negative-impls/auxiliary/foreign_trait.rs (renamed from src/test/ui/traits/negative-impls/auxiliary/foreign_trait.rs)0
-rw-r--r--tests/ui/traits/negative-impls/eager-mono.rs (renamed from src/test/ui/traits/negative-impls/eager-mono.rs)0
-rw-r--r--tests/ui/traits/negative-impls/explicitly-unimplemented-error-message.rs (renamed from src/test/ui/traits/negative-impls/explicitly-unimplemented-error-message.rs)0
-rw-r--r--tests/ui/traits/negative-impls/explicitly-unimplemented-error-message.stderr (renamed from src/test/ui/traits/negative-impls/explicitly-unimplemented-error-message.stderr)0
-rw-r--r--tests/ui/traits/negative-impls/feature-gate-negative_impls.rs (renamed from src/test/ui/traits/negative-impls/feature-gate-negative_impls.rs)0
-rw-r--r--tests/ui/traits/negative-impls/feature-gate-negative_impls.stderr (renamed from src/test/ui/traits/negative-impls/feature-gate-negative_impls.stderr)0
-rw-r--r--tests/ui/traits/negative-impls/negated-auto-traits-error.rs (renamed from src/test/ui/traits/negative-impls/negated-auto-traits-error.rs)0
-rw-r--r--tests/ui/traits/negative-impls/negated-auto-traits-error.stderr (renamed from src/test/ui/traits/negative-impls/negated-auto-traits-error.stderr)12
-rw-r--r--tests/ui/traits/negative-impls/negated-auto-traits-rpass.rs (renamed from src/test/ui/traits/negative-impls/negated-auto-traits-rpass.rs)0
-rw-r--r--tests/ui/traits/negative-impls/negative-default-impls.rs (renamed from src/test/ui/traits/negative-impls/negative-default-impls.rs)0
-rw-r--r--tests/ui/traits/negative-impls/negative-default-impls.stderr (renamed from src/test/ui/traits/negative-impls/negative-default-impls.stderr)0
-rw-r--r--tests/ui/traits/negative-impls/negative-impls-basic.rs (renamed from src/test/ui/traits/negative-impls/negative-impls-basic.rs)0
-rw-r--r--tests/ui/traits/negative-impls/negative-specializes-negative.rs (renamed from src/test/ui/traits/negative-impls/negative-specializes-negative.rs)0
-rw-r--r--tests/ui/traits/negative-impls/negative-specializes-negative.stderr (renamed from src/test/ui/traits/negative-impls/negative-specializes-negative.stderr)0
-rw-r--r--tests/ui/traits/negative-impls/negative-specializes-positive-item.rs (renamed from src/test/ui/traits/negative-impls/negative-specializes-positive-item.rs)0
-rw-r--r--tests/ui/traits/negative-impls/negative-specializes-positive-item.stderr (renamed from src/test/ui/traits/negative-impls/negative-specializes-positive-item.stderr)0
-rw-r--r--tests/ui/traits/negative-impls/negative-specializes-positive.rs (renamed from src/test/ui/traits/negative-impls/negative-specializes-positive.rs)0
-rw-r--r--tests/ui/traits/negative-impls/negative-specializes-positive.stderr (renamed from src/test/ui/traits/negative-impls/negative-specializes-positive.stderr)0
-rw-r--r--tests/ui/traits/negative-impls/no-items.rs (renamed from src/test/ui/traits/negative-impls/no-items.rs)0
-rw-r--r--tests/ui/traits/negative-impls/no-items.stderr (renamed from src/test/ui/traits/negative-impls/no-items.stderr)0
-rw-r--r--tests/ui/traits/negative-impls/pin-unsound-issue-66544-clone.rs (renamed from src/test/ui/traits/negative-impls/pin-unsound-issue-66544-clone.rs)0
-rw-r--r--tests/ui/traits/negative-impls/pin-unsound-issue-66544-clone.stderr (renamed from src/test/ui/traits/negative-impls/pin-unsound-issue-66544-clone.stderr)0
-rw-r--r--tests/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.rs (renamed from src/test/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.rs)0
-rw-r--r--tests/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.stderr (renamed from src/test/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.stderr)0
-rw-r--r--tests/ui/traits/negative-impls/positive-specializes-negative.rs (renamed from src/test/ui/traits/negative-impls/positive-specializes-negative.rs)0
-rw-r--r--tests/ui/traits/negative-impls/positive-specializes-negative.stderr (renamed from src/test/ui/traits/negative-impls/positive-specializes-negative.stderr)0
-rw-r--r--tests/ui/traits/negative-impls/rely-on-negative-impl-in-coherence.rs (renamed from src/test/ui/traits/negative-impls/rely-on-negative-impl-in-coherence.rs)0
-rw-r--r--tests/ui/traits/new-solver/fn-trait-closure.rs15
-rw-r--r--tests/ui/traits/new-solver/fn-trait.rs13
-rw-r--r--tests/ui/traits/new-solver/pointer-sized.rs12
-rw-r--r--tests/ui/traits/new-solver/pointer-sized.stderr24
-rw-r--r--tests/ui/traits/no-fallback-multiple-impls.rs (renamed from src/test/ui/traits/no-fallback-multiple-impls.rs)0
-rw-r--r--tests/ui/traits/no-fallback-multiple-impls.stderr (renamed from src/test/ui/traits/no-fallback-multiple-impls.stderr)0
-rw-r--r--tests/ui/traits/no_send-struct.rs (renamed from src/test/ui/traits/no_send-struct.rs)0
-rw-r--r--tests/ui/traits/no_send-struct.stderr (renamed from src/test/ui/traits/no_send-struct.stderr)0
-rw-r--r--tests/ui/traits/normalize-supertrait.rs (renamed from src/test/ui/traits/normalize-supertrait.rs)0
-rw-r--r--tests/ui/traits/not-suggest-non-existing-fully-qualified-path.rs (renamed from src/test/ui/traits/not-suggest-non-existing-fully-qualified-path.rs)0
-rw-r--r--tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr (renamed from src/test/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr)3
-rw-r--r--tests/ui/traits/object-does-not-impl-trait.rs (renamed from src/test/ui/traits/object-does-not-impl-trait.rs)0
-rw-r--r--tests/ui/traits/object-does-not-impl-trait.stderr (renamed from src/test/ui/traits/object-does-not-impl-trait.stderr)0
-rw-r--r--tests/ui/traits/object-one-type-two-traits.rs (renamed from src/test/ui/traits/object-one-type-two-traits.rs)0
-rw-r--r--tests/ui/traits/object/auto-dedup-in-impl.rs (renamed from src/test/ui/traits/object/auto-dedup-in-impl.rs)0
-rw-r--r--tests/ui/traits/object/auto-dedup-in-impl.stderr (renamed from src/test/ui/traits/object/auto-dedup-in-impl.stderr)0
-rw-r--r--tests/ui/traits/object/auto-dedup.rs (renamed from src/test/ui/traits/object/auto-dedup.rs)0
-rw-r--r--tests/ui/traits/object/bounds-cycle-1.rs (renamed from src/test/ui/traits/object/bounds-cycle-1.rs)0
-rw-r--r--tests/ui/traits/object/bounds-cycle-2.rs (renamed from src/test/ui/traits/object/bounds-cycle-2.rs)0
-rw-r--r--tests/ui/traits/object/bounds-cycle-3.rs (renamed from src/test/ui/traits/object/bounds-cycle-3.rs)0
-rw-r--r--tests/ui/traits/object/bounds-cycle-4.rs (renamed from src/test/ui/traits/object/bounds-cycle-4.rs)0
-rw-r--r--tests/ui/traits/object/enforce-supertrait-projection.rs (renamed from src/test/ui/traits/object/enforce-supertrait-projection.rs)0
-rw-r--r--tests/ui/traits/object/enforce-supertrait-projection.stderr (renamed from src/test/ui/traits/object/enforce-supertrait-projection.stderr)0
-rw-r--r--tests/ui/traits/object/exclusion.rs (renamed from src/test/ui/traits/object/exclusion.rs)0
-rw-r--r--tests/ui/traits/object/generics.rs (renamed from src/test/ui/traits/object/generics.rs)0
-rw-r--r--tests/ui/traits/object/issue-33140-traitobject-crate.rs (renamed from src/test/ui/traits/object/issue-33140-traitobject-crate.rs)0
-rw-r--r--tests/ui/traits/object/issue-33140-traitobject-crate.stderr (renamed from src/test/ui/traits/object/issue-33140-traitobject-crate.stderr)0
-rw-r--r--tests/ui/traits/object/issue-44454-1.rs22
-rw-r--r--tests/ui/traits/object/issue-44454-1.stderr10
-rw-r--r--tests/ui/traits/object/issue-44454-2.rs22
-rw-r--r--tests/ui/traits/object/issue-44454-2.stderr17
-rw-r--r--tests/ui/traits/object/issue-44454-3.rs33
-rw-r--r--tests/ui/traits/object/issue-44454-3.stderr11
-rw-r--r--tests/ui/traits/object/lifetime-first.rs (renamed from src/test/ui/traits/object/lifetime-first.rs)0
-rw-r--r--tests/ui/traits/object/macro-matcher.rs (renamed from src/test/ui/traits/object/macro-matcher.rs)0
-rw-r--r--tests/ui/traits/object/macro-matcher.stderr (renamed from src/test/ui/traits/object/macro-matcher.stderr)0
-rw-r--r--tests/ui/traits/object/safety.rs (renamed from src/test/ui/traits/object/safety.rs)0
-rw-r--r--tests/ui/traits/object/safety.stderr (renamed from src/test/ui/traits/object/safety.stderr)0
-rw-r--r--tests/ui/traits/object/supertrait-lifetime-bound.rs (renamed from src/test/ui/traits/object/supertrait-lifetime-bound.rs)0
-rw-r--r--tests/ui/traits/object/supertrait-lifetime-bound.stderr (renamed from src/test/ui/traits/object/supertrait-lifetime-bound.stderr)0
-rw-r--r--tests/ui/traits/object/vs-lifetime-2.rs (renamed from src/test/ui/traits/object/vs-lifetime-2.rs)0
-rw-r--r--tests/ui/traits/object/vs-lifetime-2.stderr (renamed from src/test/ui/traits/object/vs-lifetime-2.stderr)0
-rw-r--r--tests/ui/traits/object/vs-lifetime.rs (renamed from src/test/ui/traits/object/vs-lifetime.rs)0
-rw-r--r--tests/ui/traits/object/vs-lifetime.stderr (renamed from src/test/ui/traits/object/vs-lifetime.stderr)0
-rw-r--r--tests/ui/traits/object/with-lifetime-bound.rs (renamed from src/test/ui/traits/object/with-lifetime-bound.rs)0
-rw-r--r--tests/ui/traits/object/with-self-in-projection-output-bad.rs (renamed from src/test/ui/traits/object/with-self-in-projection-output-bad.rs)0
-rw-r--r--tests/ui/traits/object/with-self-in-projection-output-bad.stderr (renamed from src/test/ui/traits/object/with-self-in-projection-output-bad.stderr)0
-rw-r--r--tests/ui/traits/object/with-self-in-projection-output-good.rs (renamed from src/test/ui/traits/object/with-self-in-projection-output-good.rs)0
-rw-r--r--tests/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs (renamed from src/test/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs)0
-rw-r--r--tests/ui/traits/objects-owned-object-borrowed-method-headerless.rs (renamed from src/test/ui/traits/objects-owned-object-borrowed-method-headerless.rs)0
-rw-r--r--tests/ui/traits/operator-overloading-issue-52025.rs (renamed from src/test/ui/traits/operator-overloading-issue-52025.rs)0
-rw-r--r--tests/ui/traits/overlap-not-permitted-for-builtin-trait.rs (renamed from src/test/ui/traits/overlap-not-permitted-for-builtin-trait.rs)0
-rw-r--r--tests/ui/traits/overlap-not-permitted-for-builtin-trait.stderr (renamed from src/test/ui/traits/overlap-not-permitted-for-builtin-trait.stderr)0
-rw-r--r--tests/ui/traits/overlap-permitted-for-marker-traits.rs (renamed from src/test/ui/traits/overlap-permitted-for-marker-traits.rs)0
-rw-r--r--tests/ui/traits/param-without-lifetime-constraint.rs (renamed from src/test/ui/traits/param-without-lifetime-constraint.rs)0
-rw-r--r--tests/ui/traits/param-without-lifetime-constraint.stderr (renamed from src/test/ui/traits/param-without-lifetime-constraint.stderr)4
-rw-r--r--tests/ui/traits/parameterized-with-bounds.rs (renamed from src/test/ui/traits/parameterized-with-bounds.rs)0
-rw-r--r--tests/ui/traits/pointee-deduction.rs (renamed from src/test/ui/traits/pointee-deduction.rs)0
-rw-r--r--tests/ui/traits/pointee-tail-is-generic-errors.rs (renamed from src/test/ui/traits/pointee-tail-is-generic-errors.rs)0
-rw-r--r--tests/ui/traits/pointee-tail-is-generic-errors.stderr (renamed from src/test/ui/traits/pointee-tail-is-generic-errors.stderr)0
-rw-r--r--tests/ui/traits/pointee-tail-is-generic.rs (renamed from src/test/ui/traits/pointee-tail-is-generic.rs)0
-rw-r--r--tests/ui/traits/principal-less-objects.rs (renamed from src/test/ui/traits/principal-less-objects.rs)0
-rw-r--r--tests/ui/traits/privacy.rs (renamed from src/test/ui/traits/privacy.rs)0
-rw-r--r--tests/ui/traits/project-modulo-regions.rs (renamed from src/test/ui/traits/project-modulo-regions.rs)0
-rw-r--r--tests/ui/traits/project-modulo-regions.with_clause.stderr (renamed from src/test/ui/traits/project-modulo-regions.with_clause.stderr)0
-rw-r--r--tests/ui/traits/project-modulo-regions.without_clause.stderr (renamed from src/test/ui/traits/project-modulo-regions.without_clause.stderr)0
-rw-r--r--tests/ui/traits/region-pointer-simple.rs (renamed from src/test/ui/traits/region-pointer-simple.rs)0
-rw-r--r--tests/ui/traits/reservation-impl/coherence-conflict.rs (renamed from src/test/ui/traits/reservation-impl/coherence-conflict.rs)0
-rw-r--r--tests/ui/traits/reservation-impl/coherence-conflict.stderr (renamed from src/test/ui/traits/reservation-impl/coherence-conflict.stderr)0
-rw-r--r--tests/ui/traits/reservation-impl/no-use.rs (renamed from src/test/ui/traits/reservation-impl/no-use.rs)0
-rw-r--r--tests/ui/traits/reservation-impl/no-use.stderr (renamed from src/test/ui/traits/reservation-impl/no-use.stderr)0
-rw-r--r--tests/ui/traits/reservation-impl/non-lattice-ok.rs (renamed from src/test/ui/traits/reservation-impl/non-lattice-ok.rs)0
-rw-r--r--tests/ui/traits/reservation-impl/ok.rs (renamed from src/test/ui/traits/reservation-impl/ok.rs)0
-rw-r--r--tests/ui/traits/resolution-in-overloaded-op.rs (renamed from src/test/ui/traits/resolution-in-overloaded-op.rs)0
-rw-r--r--tests/ui/traits/resolution-in-overloaded-op.stderr (renamed from src/test/ui/traits/resolution-in-overloaded-op.stderr)0
-rw-r--r--tests/ui/traits/safety-fn-body.mir.stderr (renamed from src/test/ui/traits/safety-fn-body.mir.stderr)0
-rw-r--r--tests/ui/traits/safety-fn-body.rs (renamed from src/test/ui/traits/safety-fn-body.rs)0
-rw-r--r--tests/ui/traits/safety-fn-body.thir.stderr (renamed from src/test/ui/traits/safety-fn-body.thir.stderr)0
-rw-r--r--tests/ui/traits/safety-inherent-impl.rs (renamed from src/test/ui/traits/safety-inherent-impl.rs)0
-rw-r--r--tests/ui/traits/safety-inherent-impl.stderr (renamed from src/test/ui/traits/safety-inherent-impl.stderr)0
-rw-r--r--tests/ui/traits/safety-ok-cc.rs (renamed from src/test/ui/traits/safety-ok-cc.rs)0
-rw-r--r--tests/ui/traits/safety-ok.rs (renamed from src/test/ui/traits/safety-ok.rs)0
-rw-r--r--tests/ui/traits/safety-trait-impl-cc.rs (renamed from src/test/ui/traits/safety-trait-impl-cc.rs)0
-rw-r--r--tests/ui/traits/safety-trait-impl-cc.stderr (renamed from src/test/ui/traits/safety-trait-impl-cc.stderr)8
-rw-r--r--tests/ui/traits/safety-trait-impl.rs (renamed from src/test/ui/traits/safety-trait-impl.rs)0
-rw-r--r--tests/ui/traits/safety-trait-impl.stderr (renamed from src/test/ui/traits/safety-trait-impl.stderr)4
-rw-r--r--tests/ui/traits/self-without-lifetime-constraint.rs (renamed from src/test/ui/traits/self-without-lifetime-constraint.rs)0
-rw-r--r--tests/ui/traits/self-without-lifetime-constraint.stderr (renamed from src/test/ui/traits/self-without-lifetime-constraint.stderr)4
-rw-r--r--tests/ui/traits/solver-cycles/inductive-canonical-cycle.rs69
-rw-r--r--tests/ui/traits/static-method-generic-inference.rs (renamed from src/test/ui/traits/static-method-generic-inference.rs)0
-rw-r--r--tests/ui/traits/static-method-generic-inference.stderr (renamed from src/test/ui/traits/static-method-generic-inference.stderr)4
-rw-r--r--tests/ui/traits/static-method-overwriting.rs (renamed from src/test/ui/traits/static-method-overwriting.rs)0
-rw-r--r--tests/ui/traits/static-outlives-a-where-clause.rs (renamed from src/test/ui/traits/static-outlives-a-where-clause.rs)0
-rw-r--r--tests/ui/traits/staticness-mismatch.rs (renamed from src/test/ui/traits/staticness-mismatch.rs)0
-rw-r--r--tests/ui/traits/staticness-mismatch.stderr (renamed from src/test/ui/traits/staticness-mismatch.stderr)0
-rw-r--r--tests/ui/traits/suggest-deferences/issue-39029.fixed (renamed from src/test/ui/traits/suggest-deferences/issue-39029.fixed)0
-rw-r--r--tests/ui/traits/suggest-deferences/issue-39029.rs (renamed from src/test/ui/traits/suggest-deferences/issue-39029.rs)0
-rw-r--r--tests/ui/traits/suggest-deferences/issue-39029.stderr (renamed from src/test/ui/traits/suggest-deferences/issue-39029.stderr)3
-rw-r--r--tests/ui/traits/suggest-deferences/issue-62530.fixed (renamed from src/test/ui/traits/suggest-deferences/issue-62530.fixed)0
-rw-r--r--tests/ui/traits/suggest-deferences/issue-62530.rs (renamed from src/test/ui/traits/suggest-deferences/issue-62530.rs)0
-rw-r--r--tests/ui/traits/suggest-deferences/issue-62530.stderr (renamed from src/test/ui/traits/suggest-deferences/issue-62530.stderr)0
-rw-r--r--tests/ui/traits/suggest-deferences/multiple-0.fixed (renamed from src/test/ui/traits/suggest-deferences/multiple-0.fixed)0
-rw-r--r--tests/ui/traits/suggest-deferences/multiple-0.rs (renamed from src/test/ui/traits/suggest-deferences/multiple-0.rs)0
-rw-r--r--tests/ui/traits/suggest-deferences/multiple-0.stderr (renamed from src/test/ui/traits/suggest-deferences/multiple-0.stderr)0
-rw-r--r--tests/ui/traits/suggest-deferences/multiple-1.rs (renamed from src/test/ui/traits/suggest-deferences/multiple-1.rs)0
-rw-r--r--tests/ui/traits/suggest-deferences/multiple-1.stderr (renamed from src/test/ui/traits/suggest-deferences/multiple-1.stderr)0
-rw-r--r--tests/ui/traits/suggest-deferences/root-obligation.fixed (renamed from src/test/ui/traits/suggest-deferences/root-obligation.fixed)0
-rw-r--r--tests/ui/traits/suggest-deferences/root-obligation.rs (renamed from src/test/ui/traits/suggest-deferences/root-obligation.rs)0
-rw-r--r--tests/ui/traits/suggest-deferences/root-obligation.stderr (renamed from src/test/ui/traits/suggest-deferences/root-obligation.stderr)3
-rw-r--r--tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.fixed14
-rw-r--r--tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.rs14
-rw-r--r--tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.stderr15
-rw-r--r--tests/ui/traits/suggest-fully-qualified-closure.rs (renamed from src/test/ui/traits/suggest-fully-qualified-closure.rs)0
-rw-r--r--tests/ui/traits/suggest-fully-qualified-closure.stderr (renamed from src/test/ui/traits/suggest-fully-qualified-closure.stderr)0
-rw-r--r--tests/ui/traits/suggest-fully-qualified-path-with-adjustment.rs (renamed from src/test/ui/traits/suggest-fully-qualified-path-with-adjustment.rs)0
-rw-r--r--tests/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr (renamed from src/test/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr)0
-rw-r--r--tests/ui/traits/suggest-fully-qualified-path-without-adjustment.rs (renamed from src/test/ui/traits/suggest-fully-qualified-path-without-adjustment.rs)0
-rw-r--r--tests/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr (renamed from src/test/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr)0
-rw-r--r--tests/ui/traits/suggest-where-clause.rs (renamed from src/test/ui/traits/suggest-where-clause.rs)0
-rw-r--r--tests/ui/traits/suggest-where-clause.stderr (renamed from src/test/ui/traits/suggest-where-clause.stderr)12
-rw-r--r--tests/ui/traits/superdefault-generics.rs (renamed from src/test/ui/traits/superdefault-generics.rs)0
-rw-r--r--tests/ui/traits/syntax-polarity.rs (renamed from src/test/ui/traits/syntax-polarity.rs)0
-rw-r--r--tests/ui/traits/syntax-trait-polarity.rs (renamed from src/test/ui/traits/syntax-trait-polarity.rs)0
-rw-r--r--tests/ui/traits/syntax-trait-polarity.stderr (renamed from src/test/ui/traits/syntax-trait-polarity.stderr)0
-rw-r--r--tests/ui/traits/test-2.rs (renamed from src/test/ui/traits/test-2.rs)0
-rw-r--r--tests/ui/traits/test-2.stderr (renamed from src/test/ui/traits/test-2.stderr)0
-rw-r--r--tests/ui/traits/test.rs (renamed from src/test/ui/traits/test.rs)0
-rw-r--r--tests/ui/traits/test.stderr (renamed from src/test/ui/traits/test.stderr)0
-rw-r--r--tests/ui/traits/to-str.rs (renamed from src/test/ui/traits/to-str.rs)0
-rw-r--r--tests/ui/traits/track-obligations.rs88
-rw-r--r--tests/ui/traits/track-obligations.stderr76
-rw-r--r--tests/ui/traits/trait-or-new-type-instead.rs (renamed from src/test/ui/traits/trait-or-new-type-instead.rs)0
-rw-r--r--tests/ui/traits/trait-or-new-type-instead.stderr (renamed from src/test/ui/traits/trait-or-new-type-instead.stderr)0
-rw-r--r--tests/ui/traits/trait-upcasting/basic.rs (renamed from src/test/ui/traits/trait-upcasting/basic.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/correct-supertrait-substitution.rs (renamed from src/test/ui/traits/trait-upcasting/correct-supertrait-substitution.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/cyclic-trait-resolution.rs (renamed from src/test/ui/traits/trait-upcasting/cyclic-trait-resolution.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/cyclic-trait-resolution.stderr (renamed from src/test/ui/traits/trait-upcasting/cyclic-trait-resolution.stderr)0
-rw-r--r--tests/ui/traits/trait-upcasting/diamond.rs (renamed from src/test/ui/traits/trait-upcasting/diamond.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/invalid-upcast.rs (renamed from src/test/ui/traits/trait-upcasting/invalid-upcast.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/invalid-upcast.stderr (renamed from src/test/ui/traits/trait-upcasting/invalid-upcast.stderr)0
-rw-r--r--tests/ui/traits/trait-upcasting/issue-11515-upcast-fn_mut-fn.rs (renamed from src/test/ui/traits/trait-upcasting/issue-11515-upcast-fn_mut-fn.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/lifetime.rs (renamed from src/test/ui/traits/trait-upcasting/lifetime.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/migrate-lint-deny.rs (renamed from src/test/ui/traits/trait-upcasting/migrate-lint-deny.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/migrate-lint-deny.stderr (renamed from src/test/ui/traits/trait-upcasting/migrate-lint-deny.stderr)0
-rw-r--r--tests/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.rs (renamed from src/test/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.stderr (renamed from src/test/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.stderr)0
-rw-r--r--tests/ui/traits/trait-upcasting/replace-vptr.rs (renamed from src/test/ui/traits/trait-upcasting/replace-vptr.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/struct.rs (renamed from src/test/ui/traits/trait-upcasting/struct.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/subtrait-method.rs (renamed from src/test/ui/traits/trait-upcasting/subtrait-method.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/subtrait-method.stderr (renamed from src/test/ui/traits/trait-upcasting/subtrait-method.stderr)0
-rw-r--r--tests/ui/traits/trait-upcasting/type-checking-test-1.rs (renamed from src/test/ui/traits/trait-upcasting/type-checking-test-1.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/type-checking-test-1.stderr (renamed from src/test/ui/traits/trait-upcasting/type-checking-test-1.stderr)0
-rw-r--r--tests/ui/traits/trait-upcasting/type-checking-test-2.rs (renamed from src/test/ui/traits/trait-upcasting/type-checking-test-2.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/type-checking-test-2.stderr (renamed from src/test/ui/traits/trait-upcasting/type-checking-test-2.stderr)0
-rw-r--r--tests/ui/traits/trait-upcasting/type-checking-test-3.polonius.stderr (renamed from src/test/ui/traits/trait-upcasting/type-checking-test-3.polonius.stderr)0
-rw-r--r--tests/ui/traits/trait-upcasting/type-checking-test-3.rs (renamed from src/test/ui/traits/trait-upcasting/type-checking-test-3.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/type-checking-test-3.stderr (renamed from src/test/ui/traits/trait-upcasting/type-checking-test-3.stderr)0
-rw-r--r--tests/ui/traits/trait-upcasting/type-checking-test-4.polonius.stderr (renamed from src/test/ui/traits/trait-upcasting/type-checking-test-4.polonius.stderr)0
-rw-r--r--tests/ui/traits/trait-upcasting/type-checking-test-4.rs (renamed from src/test/ui/traits/trait-upcasting/type-checking-test-4.rs)0
-rw-r--r--tests/ui/traits/trait-upcasting/type-checking-test-4.stderr (renamed from src/test/ui/traits/trait-upcasting/type-checking-test-4.stderr)0
-rw-r--r--tests/ui/traits/typeclasses-eq-example-static.rs (renamed from src/test/ui/traits/typeclasses-eq-example-static.rs)0
-rw-r--r--tests/ui/traits/typeclasses-eq-example.rs (renamed from src/test/ui/traits/typeclasses-eq-example.rs)0
-rw-r--r--tests/ui/traits/ufcs-object.rs (renamed from src/test/ui/traits/ufcs-object.rs)0
-rw-r--r--tests/ui/traits/unspecified-self-in-trait-ref.rs (renamed from src/test/ui/traits/unspecified-self-in-trait-ref.rs)0
-rw-r--r--tests/ui/traits/unspecified-self-in-trait-ref.stderr (renamed from src/test/ui/traits/unspecified-self-in-trait-ref.stderr)0
-rw-r--r--tests/ui/traits/use-before-def.rs (renamed from src/test/ui/traits/use-before-def.rs)0
-rw-r--r--tests/ui/traits/vtable-res-trait-param.rs (renamed from src/test/ui/traits/vtable-res-trait-param.rs)0
-rw-r--r--tests/ui/traits/vtable-res-trait-param.stderr (renamed from src/test/ui/traits/vtable-res-trait-param.stderr)0
-rw-r--r--tests/ui/traits/vtable/issue-91807.rs (renamed from src/test/ui/traits/vtable/issue-91807.rs)0
-rw-r--r--tests/ui/traits/vtable/issue-97381.rs (renamed from src/test/ui/traits/vtable/issue-97381.rs)0
-rw-r--r--tests/ui/traits/vtable/issue-97381.stderr (renamed from src/test/ui/traits/vtable/issue-97381.stderr)0
-rw-r--r--tests/ui/traits/vtable/vtable-diamond.rs (renamed from src/test/ui/traits/vtable/vtable-diamond.rs)0
-rw-r--r--tests/ui/traits/vtable/vtable-diamond.stderr (renamed from src/test/ui/traits/vtable/vtable-diamond.stderr)0
-rw-r--r--tests/ui/traits/vtable/vtable-multi-level.rs (renamed from src/test/ui/traits/vtable/vtable-multi-level.rs)0
-rw-r--r--tests/ui/traits/vtable/vtable-multi-level.stderr (renamed from src/test/ui/traits/vtable/vtable-multi-level.stderr)0
-rw-r--r--tests/ui/traits/vtable/vtable-multiple.rs (renamed from src/test/ui/traits/vtable/vtable-multiple.rs)0
-rw-r--r--tests/ui/traits/vtable/vtable-multiple.stderr (renamed from src/test/ui/traits/vtable/vtable-multiple.stderr)0
-rw-r--r--tests/ui/traits/vtable/vtable-non-object-safe.rs (renamed from src/test/ui/traits/vtable/vtable-non-object-safe.rs)0
-rw-r--r--tests/ui/traits/vtable/vtable-non-object-safe.stderr (renamed from src/test/ui/traits/vtable/vtable-non-object-safe.stderr)0
-rw-r--r--tests/ui/traits/vtable/vtable-vacant.rs (renamed from src/test/ui/traits/vtable/vtable-vacant.rs)0
-rw-r--r--tests/ui/traits/vtable/vtable-vacant.stderr (renamed from src/test/ui/traits/vtable/vtable-vacant.stderr)0
-rw-r--r--tests/ui/traits/wf-object/maybe-bound.rs (renamed from src/test/ui/traits/wf-object/maybe-bound.rs)0
-rw-r--r--tests/ui/traits/wf-object/maybe-bound.stderr (renamed from src/test/ui/traits/wf-object/maybe-bound.stderr)0
-rw-r--r--tests/ui/traits/wf-object/no-duplicates.rs (renamed from src/test/ui/traits/wf-object/no-duplicates.rs)0
-rw-r--r--tests/ui/traits/wf-object/no-duplicates.stderr (renamed from src/test/ui/traits/wf-object/no-duplicates.stderr)0
-rw-r--r--tests/ui/traits/wf-object/only-maybe-bound.rs (renamed from src/test/ui/traits/wf-object/only-maybe-bound.rs)0
-rw-r--r--tests/ui/traits/wf-object/only-maybe-bound.stderr (renamed from src/test/ui/traits/wf-object/only-maybe-bound.stderr)0
-rw-r--r--tests/ui/traits/wf-object/reverse-order.rs (renamed from src/test/ui/traits/wf-object/reverse-order.rs)0
-rw-r--r--tests/ui/traits/where-clause-vs-impl.rs (renamed from src/test/ui/traits/where-clause-vs-impl.rs)0
-rw-r--r--tests/ui/traits/with-bounds-default.rs (renamed from src/test/ui/traits/with-bounds-default.rs)0
-rw-r--r--tests/ui/traits/with-dst.rs (renamed from src/test/ui/traits/with-dst.rs)0
595 files changed, 1101 insertions, 130 deletions
diff --git a/src/test/ui/traits/alias/ambiguous.rs b/tests/ui/traits/alias/ambiguous.rs
index 28409e0c6..28409e0c6 100644
--- a/src/test/ui/traits/alias/ambiguous.rs
+++ b/tests/ui/traits/alias/ambiguous.rs
diff --git a/src/test/ui/traits/alias/ambiguous.stderr b/tests/ui/traits/alias/ambiguous.stderr
index 0fe1a7967..0fe1a7967 100644
--- a/src/test/ui/traits/alias/ambiguous.stderr
+++ b/tests/ui/traits/alias/ambiguous.stderr
diff --git a/src/test/ui/traits/alias/auxiliary/greeter.rs b/tests/ui/traits/alias/auxiliary/greeter.rs
index 9e4122155..9e4122155 100644
--- a/src/test/ui/traits/alias/auxiliary/greeter.rs
+++ b/tests/ui/traits/alias/auxiliary/greeter.rs
diff --git a/src/test/ui/traits/alias/auxiliary/send_sync.rs b/tests/ui/traits/alias/auxiliary/send_sync.rs
index 9e56b87e0..9e56b87e0 100644
--- a/src/test/ui/traits/alias/auxiliary/send_sync.rs
+++ b/tests/ui/traits/alias/auxiliary/send_sync.rs
diff --git a/src/test/ui/traits/alias/basic.rs b/tests/ui/traits/alias/basic.rs
index d8168f299..d8168f299 100644
--- a/src/test/ui/traits/alias/basic.rs
+++ b/tests/ui/traits/alias/basic.rs
diff --git a/src/test/ui/traits/alias/bounds.rs b/tests/ui/traits/alias/bounds.rs
index b97eb38c5..b97eb38c5 100644
--- a/src/test/ui/traits/alias/bounds.rs
+++ b/tests/ui/traits/alias/bounds.rs
diff --git a/src/test/ui/traits/alias/cross-crate.rs b/tests/ui/traits/alias/cross-crate.rs
index 8919c6434..8919c6434 100644
--- a/src/test/ui/traits/alias/cross-crate.rs
+++ b/tests/ui/traits/alias/cross-crate.rs
diff --git a/src/test/ui/traits/alias/cross-crate.stderr b/tests/ui/traits/alias/cross-crate.stderr
index ae9d7d0a9..ae9d7d0a9 100644
--- a/src/test/ui/traits/alias/cross-crate.stderr
+++ b/tests/ui/traits/alias/cross-crate.stderr
diff --git a/src/test/ui/traits/alias/generic-default-in-dyn.rs b/tests/ui/traits/alias/generic-default-in-dyn.rs
index d44e1c2a9..d44e1c2a9 100644
--- a/src/test/ui/traits/alias/generic-default-in-dyn.rs
+++ b/tests/ui/traits/alias/generic-default-in-dyn.rs
diff --git a/src/test/ui/traits/alias/generic-default-in-dyn.stderr b/tests/ui/traits/alias/generic-default-in-dyn.stderr
index 76a068e86..0d3f794aa 100644
--- a/src/test/ui/traits/alias/generic-default-in-dyn.stderr
+++ b/tests/ui/traits/alias/generic-default-in-dyn.stderr
@@ -12,11 +12,9 @@ error[E0393]: the type parameter `Rhs` must be explicitly specified
|
LL | struct Foo<T>(dyn SendEqAlias<T>);
| ^^^^^^^^^^^^^^ missing reference to `Rhs`
+ --> $SRC_DIR/core/src/cmp.rs:LL:COL
|
- ::: $SRC_DIR/core/src/cmp.rs:LL:COL
- |
-LL | pub trait PartialEq<Rhs: ?Sized = Self> {
- | --------------------------------------- type parameter `Rhs` must be specified for this
+ = note: type parameter `Rhs` must be specified for this
|
= note: because of the default `Self` reference, type parameters must be specified on object types
@@ -25,11 +23,9 @@ error[E0393]: the type parameter `Rhs` must be explicitly specified
|
LL | struct Bar<T>(dyn SendEqAlias<T>, T);
| ^^^^^^^^^^^^^^ missing reference to `Rhs`
+ --> $SRC_DIR/core/src/cmp.rs:LL:COL
|
- ::: $SRC_DIR/core/src/cmp.rs:LL:COL
- |
-LL | pub trait PartialEq<Rhs: ?Sized = Self> {
- | --------------------------------------- type parameter `Rhs` must be specified for this
+ = note: type parameter `Rhs` must be specified for this
|
= note: because of the default `Self` reference, type parameters must be specified on object types
diff --git a/src/test/ui/traits/alias/impl.rs b/tests/ui/traits/alias/impl.rs
index 6e35793a0..6e35793a0 100644
--- a/src/test/ui/traits/alias/impl.rs
+++ b/tests/ui/traits/alias/impl.rs
diff --git a/src/test/ui/traits/alias/impl.stderr b/tests/ui/traits/alias/impl.stderr
index cedcd1021..cedcd1021 100644
--- a/src/test/ui/traits/alias/impl.stderr
+++ b/tests/ui/traits/alias/impl.stderr
diff --git a/src/test/ui/traits/alias/import-cross-crate.rs b/tests/ui/traits/alias/import-cross-crate.rs
index 868585cd0..868585cd0 100644
--- a/src/test/ui/traits/alias/import-cross-crate.rs
+++ b/tests/ui/traits/alias/import-cross-crate.rs
diff --git a/src/test/ui/traits/alias/import.rs b/tests/ui/traits/alias/import.rs
index 802a8f156..802a8f156 100644
--- a/src/test/ui/traits/alias/import.rs
+++ b/tests/ui/traits/alias/import.rs
diff --git a/src/test/ui/traits/alias/issue-60021-assoc-method-resolve.rs b/tests/ui/traits/alias/issue-60021-assoc-method-resolve.rs
index 5e27ed3c6..5e27ed3c6 100644
--- a/src/test/ui/traits/alias/issue-60021-assoc-method-resolve.rs
+++ b/tests/ui/traits/alias/issue-60021-assoc-method-resolve.rs
diff --git a/src/test/ui/traits/alias/issue-72415-assoc-const-resolve.rs b/tests/ui/traits/alias/issue-72415-assoc-const-resolve.rs
index e49125d10..e49125d10 100644
--- a/src/test/ui/traits/alias/issue-72415-assoc-const-resolve.rs
+++ b/tests/ui/traits/alias/issue-72415-assoc-const-resolve.rs
diff --git a/src/test/ui/traits/alias/issue-75983.rs b/tests/ui/traits/alias/issue-75983.rs
index f9a7f36de..f9a7f36de 100644
--- a/src/test/ui/traits/alias/issue-75983.rs
+++ b/tests/ui/traits/alias/issue-75983.rs
diff --git a/src/test/ui/traits/alias/issue-83613.rs b/tests/ui/traits/alias/issue-83613.rs
index 2462e703a..2462e703a 100644
--- a/src/test/ui/traits/alias/issue-83613.rs
+++ b/tests/ui/traits/alias/issue-83613.rs
diff --git a/src/test/ui/traits/alias/issue-83613.stderr b/tests/ui/traits/alias/issue-83613.stderr
index a78294da6..a78294da6 100644
--- a/src/test/ui/traits/alias/issue-83613.stderr
+++ b/tests/ui/traits/alias/issue-83613.stderr
diff --git a/src/test/ui/traits/alias/maybe-bound.rs b/tests/ui/traits/alias/maybe-bound.rs
index 284baa481..284baa481 100644
--- a/src/test/ui/traits/alias/maybe-bound.rs
+++ b/tests/ui/traits/alias/maybe-bound.rs
diff --git a/src/test/ui/traits/alias/no-duplicates.rs b/tests/ui/traits/alias/no-duplicates.rs
index 88feb8917..88feb8917 100644
--- a/src/test/ui/traits/alias/no-duplicates.rs
+++ b/tests/ui/traits/alias/no-duplicates.rs
diff --git a/src/test/ui/traits/alias/no-duplicates.stderr b/tests/ui/traits/alias/no-duplicates.stderr
index bf244b97e..bf244b97e 100644
--- a/src/test/ui/traits/alias/no-duplicates.stderr
+++ b/tests/ui/traits/alias/no-duplicates.stderr
diff --git a/src/test/ui/traits/alias/no-extra-traits.rs b/tests/ui/traits/alias/no-extra-traits.rs
index 4dad8c0f8..4dad8c0f8 100644
--- a/src/test/ui/traits/alias/no-extra-traits.rs
+++ b/tests/ui/traits/alias/no-extra-traits.rs
diff --git a/src/test/ui/traits/alias/no-extra-traits.stderr b/tests/ui/traits/alias/no-extra-traits.stderr
index 4b1ddf684..4b1ddf684 100644
--- a/src/test/ui/traits/alias/no-extra-traits.stderr
+++ b/tests/ui/traits/alias/no-extra-traits.stderr
diff --git a/src/test/ui/traits/alias/object-fail.rs b/tests/ui/traits/alias/object-fail.rs
index 5c753ff20..5c753ff20 100644
--- a/src/test/ui/traits/alias/object-fail.rs
+++ b/tests/ui/traits/alias/object-fail.rs
diff --git a/src/test/ui/traits/alias/object-fail.stderr b/tests/ui/traits/alias/object-fail.stderr
index 325bc6d28..048a150df 100644
--- a/src/test/ui/traits/alias/object-fail.stderr
+++ b/tests/ui/traits/alias/object-fail.stderr
@@ -7,8 +7,7 @@ LL | let _: &dyn EqAlias = &123;
note: for a trait to be "object safe" 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>
--> $SRC_DIR/core/src/cmp.rs:LL:COL
|
-LL | pub trait Eq: PartialEq<Self> {
- | ^^^^^^^^^^^^^^^ the trait cannot be made into an object because it uses `Self` as a type parameter
+ = note: the trait cannot be made into an object because it uses `Self` as a type parameter
error[E0191]: the value of the associated type `Item` (from trait `Iterator`) must be specified
--> $DIR/object-fail.rs:9:17
diff --git a/src/test/ui/traits/alias/object-wf.rs b/tests/ui/traits/alias/object-wf.rs
index 1440f02df..1440f02df 100644
--- a/src/test/ui/traits/alias/object-wf.rs
+++ b/tests/ui/traits/alias/object-wf.rs
diff --git a/src/test/ui/traits/alias/object.rs b/tests/ui/traits/alias/object.rs
index 12177cd82..12177cd82 100644
--- a/src/test/ui/traits/alias/object.rs
+++ b/tests/ui/traits/alias/object.rs
diff --git a/src/test/ui/traits/alias/only-maybe-bound.rs b/tests/ui/traits/alias/only-maybe-bound.rs
index e4abf314e..e4abf314e 100644
--- a/src/test/ui/traits/alias/only-maybe-bound.rs
+++ b/tests/ui/traits/alias/only-maybe-bound.rs
diff --git a/src/test/ui/traits/alias/only-maybe-bound.stderr b/tests/ui/traits/alias/only-maybe-bound.stderr
index 175ec8120..175ec8120 100644
--- a/src/test/ui/traits/alias/only-maybe-bound.stderr
+++ b/tests/ui/traits/alias/only-maybe-bound.stderr
diff --git a/src/test/ui/traits/alias/self-in-const-generics.rs b/tests/ui/traits/alias/self-in-const-generics.rs
index b0de8ccd6..b0de8ccd6 100644
--- a/src/test/ui/traits/alias/self-in-const-generics.rs
+++ b/tests/ui/traits/alias/self-in-const-generics.rs
diff --git a/src/test/ui/traits/alias/self-in-const-generics.stderr b/tests/ui/traits/alias/self-in-const-generics.stderr
index 61cc217cf..61cc217cf 100644
--- a/src/test/ui/traits/alias/self-in-const-generics.stderr
+++ b/tests/ui/traits/alias/self-in-const-generics.stderr
diff --git a/src/test/ui/traits/alias/self-in-generics.rs b/tests/ui/traits/alias/self-in-generics.rs
index 0bb6335f9..0bb6335f9 100644
--- a/src/test/ui/traits/alias/self-in-generics.rs
+++ b/tests/ui/traits/alias/self-in-generics.rs
diff --git a/src/test/ui/traits/alias/self-in-generics.stderr b/tests/ui/traits/alias/self-in-generics.stderr
index 110d60e6e..110d60e6e 100644
--- a/src/test/ui/traits/alias/self-in-generics.stderr
+++ b/tests/ui/traits/alias/self-in-generics.stderr
diff --git a/src/test/ui/traits/alias/style_lint.rs b/tests/ui/traits/alias/style_lint.rs
index 33be20054..33be20054 100644
--- a/src/test/ui/traits/alias/style_lint.rs
+++ b/tests/ui/traits/alias/style_lint.rs
diff --git a/src/test/ui/traits/alias/style_lint.stderr b/tests/ui/traits/alias/style_lint.stderr
index 91e2ea90e..91e2ea90e 100644
--- a/src/test/ui/traits/alias/style_lint.stderr
+++ b/tests/ui/traits/alias/style_lint.stderr
diff --git a/src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.fixed b/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.fixed
index 8a94abaeb..8a94abaeb 100644
--- a/src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.fixed
+++ b/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.fixed
diff --git a/src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.rs b/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.rs
index 40c678c28..40c678c28 100644
--- a/src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.rs
+++ b/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.rs
diff --git a/src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr b/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr
index 6e03eeada..6e03eeada 100644
--- a/src/test/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr
+++ b/tests/ui/traits/alias/suggest-trait-alias-instead-of-type.stderr
diff --git a/src/test/ui/traits/alias/syntax-fail.rs b/tests/ui/traits/alias/syntax-fail.rs
index 039bbce8c..039bbce8c 100644
--- a/src/test/ui/traits/alias/syntax-fail.rs
+++ b/tests/ui/traits/alias/syntax-fail.rs
diff --git a/src/test/ui/traits/alias/syntax-fail.stderr b/tests/ui/traits/alias/syntax-fail.stderr
index 748b92056..748b92056 100644
--- a/src/test/ui/traits/alias/syntax-fail.stderr
+++ b/tests/ui/traits/alias/syntax-fail.stderr
diff --git a/src/test/ui/traits/alias/syntax.rs b/tests/ui/traits/alias/syntax.rs
index 17557a51a..17557a51a 100644
--- a/src/test/ui/traits/alias/syntax.rs
+++ b/tests/ui/traits/alias/syntax.rs
diff --git a/src/test/ui/traits/alias/wf.rs b/tests/ui/traits/alias/wf.rs
index d10e2abb0..d10e2abb0 100644
--- a/src/test/ui/traits/alias/wf.rs
+++ b/tests/ui/traits/alias/wf.rs
diff --git a/src/test/ui/traits/alias/wf.stderr b/tests/ui/traits/alias/wf.stderr
index 7172008d3..7172008d3 100644
--- a/src/test/ui/traits/alias/wf.stderr
+++ b/tests/ui/traits/alias/wf.stderr
diff --git a/src/test/ui/traits/alignment-gep-tup-like-1.rs b/tests/ui/traits/alignment-gep-tup-like-1.rs
index eb503dcf3..eb503dcf3 100644
--- a/src/test/ui/traits/alignment-gep-tup-like-1.rs
+++ b/tests/ui/traits/alignment-gep-tup-like-1.rs
diff --git a/src/test/ui/traits/anon-static-method.rs b/tests/ui/traits/anon-static-method.rs
index ede01afae..ede01afae 100644
--- a/src/test/ui/traits/anon-static-method.rs
+++ b/tests/ui/traits/anon-static-method.rs
diff --git a/src/test/ui/traits/anon_trait_static_method_exe.rs b/tests/ui/traits/anon_trait_static_method_exe.rs
index b49302954..b49302954 100644
--- a/src/test/ui/traits/anon_trait_static_method_exe.rs
+++ b/tests/ui/traits/anon_trait_static_method_exe.rs
diff --git a/src/test/ui/traits/as-struct-constructor.rs b/tests/ui/traits/as-struct-constructor.rs
index 13ebf9d8d..13ebf9d8d 100644
--- a/src/test/ui/traits/as-struct-constructor.rs
+++ b/tests/ui/traits/as-struct-constructor.rs
diff --git a/src/test/ui/traits/as-struct-constructor.stderr b/tests/ui/traits/as-struct-constructor.stderr
index d06e85f3a..d06e85f3a 100644
--- a/src/test/ui/traits/as-struct-constructor.stderr
+++ b/tests/ui/traits/as-struct-constructor.stderr
diff --git a/src/test/ui/traits/assignability-trait.rs b/tests/ui/traits/assignability-trait.rs
index a8547c1d2..a8547c1d2 100644
--- a/src/test/ui/traits/assignability-trait.rs
+++ b/tests/ui/traits/assignability-trait.rs
diff --git a/tests/ui/traits/assoc-type-in-superbad.rs b/tests/ui/traits/assoc-type-in-superbad.rs
new file mode 100644
index 000000000..65340b2a2
--- /dev/null
+++ b/tests/ui/traits/assoc-type-in-superbad.rs
@@ -0,0 +1,16 @@
+// Test case where an associated type is referenced from within the
+// supertrait definition, and the impl makes the wrong
+// associations. Issue #20220.
+
+use std::vec::IntoIter;
+
+pub trait Foo: Iterator<Item = <Self as Foo>::Key> {
+ type Key;
+}
+
+impl Foo for IntoIter<i32> {
+ type Key = u32;
+ //~^ ERROR expected `IntoIter<i32>` to be an iterator that yields `u32`, but it yields `i32`
+}
+
+fn main() {}
diff --git a/src/test/ui/traits/assoc-type-in-superbad.stderr b/tests/ui/traits/assoc-type-in-superbad.stderr
index 3e2d9d903..7fa1d2c2e 100644
--- a/src/test/ui/traits/assoc-type-in-superbad.stderr
+++ b/tests/ui/traits/assoc-type-in-superbad.stderr
@@ -1,4 +1,4 @@
-error[E0271]: expected `std::vec::IntoIter<i32>` to be an iterator that yields `u32`, but it yields `i32`
+error[E0271]: expected `IntoIter<i32>` to be an iterator that yields `u32`, but it yields `i32`
--> $DIR/assoc-type-in-superbad.rs:12:16
|
LL | type Key = u32;
diff --git a/src/test/ui/traits/assoc-type-in-supertrait.rs b/tests/ui/traits/assoc-type-in-supertrait.rs
index 7d6a754cc..7d6a754cc 100644
--- a/src/test/ui/traits/assoc-type-in-supertrait.rs
+++ b/tests/ui/traits/assoc-type-in-supertrait.rs
diff --git a/src/test/ui/traits/associated_type_bound/assoc_type_bound_with_struct.rs b/tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.rs
index 471a6b836..471a6b836 100644
--- a/src/test/ui/traits/associated_type_bound/assoc_type_bound_with_struct.rs
+++ b/tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.rs
diff --git a/src/test/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr b/tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr
index 9ca446a0a..5be334986 100644
--- a/src/test/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr
+++ b/tests/ui/traits/associated_type_bound/assoc_type_bound_with_struct.stderr
@@ -9,11 +9,9 @@ error[E0404]: expected trait, found struct `String`
|
LL | struct Foo<T> where T: Bar, <T as Bar>::Baz: String {
| ^^^^^^ not a trait
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
|
- ::: $SRC_DIR/alloc/src/string.rs:LL:COL
- |
-LL | pub trait ToString {
- | ------------------ similarly named trait `ToString` defined here
+ = note: similarly named trait `ToString` defined here
|
help: constrain the associated type to `String`
|
@@ -29,11 +27,9 @@ error[E0404]: expected trait, found struct `String`
|
LL | struct Qux<'a, T> where T: Bar, <&'a T as Bar>::Baz: String {
| ^^^^^^ not a trait
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
|
- ::: $SRC_DIR/alloc/src/string.rs:LL:COL
- |
-LL | pub trait ToString {
- | ------------------ similarly named trait `ToString` defined here
+ = note: similarly named trait `ToString` defined here
|
help: constrain the associated type to `String`
|
@@ -49,11 +45,9 @@ error[E0404]: expected trait, found struct `String`
|
LL | fn foo<T: Bar>(_: T) where <T as Bar>::Baz: String {
| ^^^^^^ not a trait
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
|
- ::: $SRC_DIR/alloc/src/string.rs:LL:COL
- |
-LL | pub trait ToString {
- | ------------------ similarly named trait `ToString` defined here
+ = note: similarly named trait `ToString` defined here
|
help: constrain the associated type to `String`
|
@@ -69,11 +63,9 @@ error[E0404]: expected trait, found struct `String`
|
LL | fn qux<'a, T: Bar>(_: &'a T) where <&'a T as Bar>::Baz: String {
| ^^^^^^ not a trait
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
|
- ::: $SRC_DIR/alloc/src/string.rs:LL:COL
- |
-LL | pub trait ToString {
- | ------------------ similarly named trait `ToString` defined here
+ = note: similarly named trait `ToString` defined here
|
help: constrain the associated type to `String`
|
@@ -89,11 +81,9 @@ error[E0404]: expected trait, found struct `String`
|
LL | fn issue_95327() where <u8 as Unresolved>::Assoc: String {}
| ^^^^^^ help: a trait with a similar name exists: `ToString`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
|
- ::: $SRC_DIR/alloc/src/string.rs:LL:COL
- |
-LL | pub trait ToString {
- | ------------------ similarly named trait `ToString` defined here
+ = note: similarly named trait `ToString` defined here
error: aborting due to 6 previous errors
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-1.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-1.rs
index b1f124c7e..b1f124c7e 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-1.rs
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-1.rs
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr
index fa7a8a2a0..fa7a8a2a0 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2-ok.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-2-ok.rs
index 1422dda27..1422dda27 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2-ok.rs
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-2-ok.rs
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-2.rs
index eb2fb6e84..eb2fb6e84 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2.rs
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-2.rs
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2.stderr b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-2.stderr
index 10e82c54e..10e82c54e 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-2.stderr
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-2.stderr
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-3.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-3.rs
index ba04fd93a..ba04fd93a 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-3.rs
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-3.rs
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-3.stderr b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-3.stderr
index ade552c4b..ade552c4b 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-3.stderr
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-3.stderr
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-4.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-4.rs
index e9ca1563f..e9ca1563f 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-4.rs
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-4.rs
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr
index 4891ee9c2..4891ee9c2 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-5.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-5.rs
index 7d733ad26..7d733ad26 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-5.rs
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-5.rs
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-5.stderr b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-5.stderr
index 00fdb3753..00fdb3753 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-5.stderr
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-5.stderr
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-6.rs b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-6.rs
index cb196d67f..cb196d67f 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-6.rs
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-6.rs
diff --git a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-6.stderr b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-6.stderr
index 9b0975e5e..9b0975e5e 100644
--- a/src/test/ui/traits/associated_type_bound/check-trait-object-bounds-6.stderr
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-6.stderr
diff --git a/src/test/ui/traits/associated_type_bound/issue-51446.rs b/tests/ui/traits/associated_type_bound/issue-51446.rs
index 7dd95de73..7dd95de73 100644
--- a/src/test/ui/traits/associated_type_bound/issue-51446.rs
+++ b/tests/ui/traits/associated_type_bound/issue-51446.rs
diff --git a/src/test/ui/traits/astconv-cycle-between-and-type.rs b/tests/ui/traits/astconv-cycle-between-and-type.rs
index cc8f9dc51..cc8f9dc51 100644
--- a/src/test/ui/traits/astconv-cycle-between-and-type.rs
+++ b/tests/ui/traits/astconv-cycle-between-and-type.rs
diff --git a/src/test/ui/traits/augmented-assignments-trait.rs b/tests/ui/traits/augmented-assignments-trait.rs
index 747a5393f..747a5393f 100644
--- a/src/test/ui/traits/augmented-assignments-trait.rs
+++ b/tests/ui/traits/augmented-assignments-trait.rs
diff --git a/src/test/ui/traits/auxiliary/anon_trait_static_method_lib.rs b/tests/ui/traits/auxiliary/anon_trait_static_method_lib.rs
index dceec7e3e..dceec7e3e 100644
--- a/src/test/ui/traits/auxiliary/anon_trait_static_method_lib.rs
+++ b/tests/ui/traits/auxiliary/anon_trait_static_method_lib.rs
diff --git a/src/test/ui/traits/auxiliary/go_trait.rs b/tests/ui/traits/auxiliary/go_trait.rs
index aa0ec2289..aa0ec2289 100644
--- a/src/test/ui/traits/auxiliary/go_trait.rs
+++ b/tests/ui/traits/auxiliary/go_trait.rs
diff --git a/src/test/ui/traits/auxiliary/issue_89119_intercrate_caching.rs b/tests/ui/traits/auxiliary/issue_89119_intercrate_caching.rs
index 769e89731..769e89731 100644
--- a/src/test/ui/traits/auxiliary/issue_89119_intercrate_caching.rs
+++ b/tests/ui/traits/auxiliary/issue_89119_intercrate_caching.rs
diff --git a/src/test/ui/traits/auxiliary/trait_safety_lib.rs b/tests/ui/traits/auxiliary/trait_safety_lib.rs
index 6fc432ed4..6fc432ed4 100644
--- a/src/test/ui/traits/auxiliary/trait_safety_lib.rs
+++ b/tests/ui/traits/auxiliary/trait_safety_lib.rs
diff --git a/src/test/ui/traits/auxiliary/traitimpl.rs b/tests/ui/traits/auxiliary/traitimpl.rs
index fda5314cd..fda5314cd 100644
--- a/src/test/ui/traits/auxiliary/traitimpl.rs
+++ b/tests/ui/traits/auxiliary/traitimpl.rs
diff --git a/src/test/ui/traits/bad-method-typaram-kind.rs b/tests/ui/traits/bad-method-typaram-kind.rs
index b088eae1c..b088eae1c 100644
--- a/src/test/ui/traits/bad-method-typaram-kind.rs
+++ b/tests/ui/traits/bad-method-typaram-kind.rs
diff --git a/src/test/ui/traits/bad-method-typaram-kind.stderr b/tests/ui/traits/bad-method-typaram-kind.stderr
index 56acfbe80..56acfbe80 100644
--- a/src/test/ui/traits/bad-method-typaram-kind.stderr
+++ b/tests/ui/traits/bad-method-typaram-kind.stderr
diff --git a/src/test/ui/traits/bad-sized.rs b/tests/ui/traits/bad-sized.rs
index a15219679..a15219679 100644
--- a/src/test/ui/traits/bad-sized.rs
+++ b/tests/ui/traits/bad-sized.rs
diff --git a/src/test/ui/traits/bad-sized.stderr b/tests/ui/traits/bad-sized.stderr
index 6f9113fff..fb9900bc5 100644
--- a/src/test/ui/traits/bad-sized.stderr
+++ b/tests/ui/traits/bad-sized.stderr
@@ -18,9 +18,6 @@ LL | let x: Vec<dyn Trait + Sized> = Vec::new();
= help: the trait `Sized` is not implemented for `dyn Trait`
note: required by a bound in `Vec`
--> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
- |
-LL | pub struct Vec<T, #[unstable(feature = "allocator_api", issue = "32838")] A: Allocator = Global> {
- | ^ required by this bound in `Vec`
error[E0277]: the size for values of type `dyn Trait` cannot be known at compilation time
--> $DIR/bad-sized.rs:4:37
@@ -31,9 +28,6 @@ LL | let x: Vec<dyn Trait + Sized> = Vec::new();
= help: the trait `Sized` is not implemented for `dyn Trait`
note: required by a bound in `Vec::<T>::new`
--> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
- |
-LL | impl<T> Vec<T> {
- | ^ required by this bound in `Vec::<T>::new`
error[E0277]: the size for values of type `dyn Trait` cannot be known at compilation time
--> $DIR/bad-sized.rs:4:37
@@ -44,9 +38,6 @@ LL | let x: Vec<dyn Trait + Sized> = Vec::new();
= help: the trait `Sized` is not implemented for `dyn Trait`
note: required by a bound in `Vec`
--> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
- |
-LL | pub struct Vec<T, #[unstable(feature = "allocator_api", issue = "32838")] A: Allocator = Global> {
- | ^ required by this bound in `Vec`
error: aborting due to 4 previous errors
diff --git a/src/test/ui/traits/bound/assoc-fn-bound-root-obligation.rs b/tests/ui/traits/bound/assoc-fn-bound-root-obligation.rs
index f9a934764..f9a934764 100644
--- a/src/test/ui/traits/bound/assoc-fn-bound-root-obligation.rs
+++ b/tests/ui/traits/bound/assoc-fn-bound-root-obligation.rs
diff --git a/src/test/ui/traits/bound/assoc-fn-bound-root-obligation.stderr b/tests/ui/traits/bound/assoc-fn-bound-root-obligation.stderr
index ce9ab2d81..ce9ab2d81 100644
--- a/src/test/ui/traits/bound/assoc-fn-bound-root-obligation.stderr
+++ b/tests/ui/traits/bound/assoc-fn-bound-root-obligation.stderr
diff --git a/src/test/ui/traits/bound/auxiliary/crate_a1.rs b/tests/ui/traits/bound/auxiliary/crate_a1.rs
index 6aa010258..6aa010258 100644
--- a/src/test/ui/traits/bound/auxiliary/crate_a1.rs
+++ b/tests/ui/traits/bound/auxiliary/crate_a1.rs
diff --git a/src/test/ui/traits/bound/auxiliary/crate_a2.rs b/tests/ui/traits/bound/auxiliary/crate_a2.rs
index d6057db5e..d6057db5e 100644
--- a/src/test/ui/traits/bound/auxiliary/crate_a2.rs
+++ b/tests/ui/traits/bound/auxiliary/crate_a2.rs
diff --git a/src/test/ui/traits/bound/auxiliary/on_structs_and_enums_xc.rs b/tests/ui/traits/bound/auxiliary/on_structs_and_enums_xc.rs
index 7e9592eee..7e9592eee 100644
--- a/src/test/ui/traits/bound/auxiliary/on_structs_and_enums_xc.rs
+++ b/tests/ui/traits/bound/auxiliary/on_structs_and_enums_xc.rs
diff --git a/src/test/ui/traits/bound/basic.rs b/tests/ui/traits/bound/basic.rs
index 8c8a7eb7d..8c8a7eb7d 100644
--- a/src/test/ui/traits/bound/basic.rs
+++ b/tests/ui/traits/bound/basic.rs
diff --git a/src/test/ui/traits/bound/generic_trait.rs b/tests/ui/traits/bound/generic_trait.rs
index 18382bb59..18382bb59 100644
--- a/src/test/ui/traits/bound/generic_trait.rs
+++ b/tests/ui/traits/bound/generic_trait.rs
diff --git a/src/test/ui/traits/bound/impl-comparison-duplicates.rs b/tests/ui/traits/bound/impl-comparison-duplicates.rs
index de6c2afa2..de6c2afa2 100644
--- a/src/test/ui/traits/bound/impl-comparison-duplicates.rs
+++ b/tests/ui/traits/bound/impl-comparison-duplicates.rs
diff --git a/src/test/ui/traits/bound/in-arc.rs b/tests/ui/traits/bound/in-arc.rs
index a1492c0b9..a1492c0b9 100644
--- a/src/test/ui/traits/bound/in-arc.rs
+++ b/tests/ui/traits/bound/in-arc.rs
diff --git a/src/test/ui/traits/bound/multiple.rs b/tests/ui/traits/bound/multiple.rs
index 868b33407..868b33407 100644
--- a/src/test/ui/traits/bound/multiple.rs
+++ b/tests/ui/traits/bound/multiple.rs
diff --git a/src/test/ui/traits/bound/not-on-bare-trait.rs b/tests/ui/traits/bound/not-on-bare-trait.rs
index daf18c670..daf18c670 100644
--- a/src/test/ui/traits/bound/not-on-bare-trait.rs
+++ b/tests/ui/traits/bound/not-on-bare-trait.rs
diff --git a/src/test/ui/traits/bound/not-on-bare-trait.stderr b/tests/ui/traits/bound/not-on-bare-trait.stderr
index 8da0b6d6b..36b08a7d3 100644
--- a/src/test/ui/traits/bound/not-on-bare-trait.stderr
+++ b/tests/ui/traits/bound/not-on-bare-trait.stderr
@@ -20,6 +20,10 @@ LL | fn foo(_x: Foo + Send) {
|
= help: the trait `Sized` is not implemented for `(dyn Foo + Send + 'static)`
= help: unsized fn params are gated as an unstable feature
+help: you can use `impl Trait` as the argument type
+ |
+LL | fn foo(_x: impl Foo + Send) {
+ | ++++
help: function arguments must have a statically known size, borrowed types always have a known size
|
LL | fn foo(_x: &Foo + Send) {
diff --git a/src/test/ui/traits/bound/not-on-struct.rs b/tests/ui/traits/bound/not-on-struct.rs
index 8633e9d7a..8633e9d7a 100644
--- a/src/test/ui/traits/bound/not-on-struct.rs
+++ b/tests/ui/traits/bound/not-on-struct.rs
diff --git a/src/test/ui/traits/bound/not-on-struct.stderr b/tests/ui/traits/bound/not-on-struct.stderr
index 2de35dc7f..2de35dc7f 100644
--- a/src/test/ui/traits/bound/not-on-struct.stderr
+++ b/tests/ui/traits/bound/not-on-struct.stderr
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-in-fns.rs b/tests/ui/traits/bound/on-structs-and-enums-in-fns.rs
index 6a6fcf530..6a6fcf530 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-in-fns.rs
+++ b/tests/ui/traits/bound/on-structs-and-enums-in-fns.rs
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-in-fns.stderr b/tests/ui/traits/bound/on-structs-and-enums-in-fns.stderr
index 61237a63e..61237a63e 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-in-fns.stderr
+++ b/tests/ui/traits/bound/on-structs-and-enums-in-fns.stderr
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-in-impls.rs b/tests/ui/traits/bound/on-structs-and-enums-in-impls.rs
index d37949952..d37949952 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-in-impls.rs
+++ b/tests/ui/traits/bound/on-structs-and-enums-in-impls.rs
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-in-impls.stderr b/tests/ui/traits/bound/on-structs-and-enums-in-impls.stderr
index 8a4374226..8a4374226 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-in-impls.stderr
+++ b/tests/ui/traits/bound/on-structs-and-enums-in-impls.stderr
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-locals.rs b/tests/ui/traits/bound/on-structs-and-enums-locals.rs
index 60ba343bb..60ba343bb 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-locals.rs
+++ b/tests/ui/traits/bound/on-structs-and-enums-locals.rs
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-locals.stderr b/tests/ui/traits/bound/on-structs-and-enums-locals.stderr
index 20bbe69c0..20bbe69c0 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-locals.stderr
+++ b/tests/ui/traits/bound/on-structs-and-enums-locals.stderr
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-rpass.rs b/tests/ui/traits/bound/on-structs-and-enums-rpass.rs
index 4dc4fecc9..4dc4fecc9 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-rpass.rs
+++ b/tests/ui/traits/bound/on-structs-and-enums-rpass.rs
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-static.rs b/tests/ui/traits/bound/on-structs-and-enums-static.rs
index df3f8b8a5..df3f8b8a5 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-static.rs
+++ b/tests/ui/traits/bound/on-structs-and-enums-static.rs
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-static.stderr b/tests/ui/traits/bound/on-structs-and-enums-static.stderr
index fda734e85..fda734e85 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-static.stderr
+++ b/tests/ui/traits/bound/on-structs-and-enums-static.stderr
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-xc.rs b/tests/ui/traits/bound/on-structs-and-enums-xc.rs
index 94316d240..94316d240 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-xc.rs
+++ b/tests/ui/traits/bound/on-structs-and-enums-xc.rs
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-xc.stderr b/tests/ui/traits/bound/on-structs-and-enums-xc.stderr
index 5064b60bf..5064b60bf 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-xc.stderr
+++ b/tests/ui/traits/bound/on-structs-and-enums-xc.stderr
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-xc1.rs b/tests/ui/traits/bound/on-structs-and-enums-xc1.rs
index 5ef35b513..5ef35b513 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-xc1.rs
+++ b/tests/ui/traits/bound/on-structs-and-enums-xc1.rs
diff --git a/src/test/ui/traits/bound/on-structs-and-enums-xc1.stderr b/tests/ui/traits/bound/on-structs-and-enums-xc1.stderr
index 3fb5decb7..3fb5decb7 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums-xc1.stderr
+++ b/tests/ui/traits/bound/on-structs-and-enums-xc1.stderr
diff --git a/src/test/ui/traits/bound/on-structs-and-enums.rs b/tests/ui/traits/bound/on-structs-and-enums.rs
index 024084fa7..024084fa7 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums.rs
+++ b/tests/ui/traits/bound/on-structs-and-enums.rs
diff --git a/src/test/ui/traits/bound/on-structs-and-enums.stderr b/tests/ui/traits/bound/on-structs-and-enums.stderr
index fe05b8634..fe05b8634 100644
--- a/src/test/ui/traits/bound/on-structs-and-enums.stderr
+++ b/tests/ui/traits/bound/on-structs-and-enums.stderr
diff --git a/src/test/ui/traits/bound/recursion.rs b/tests/ui/traits/bound/recursion.rs
index 0023ff654..0023ff654 100644
--- a/src/test/ui/traits/bound/recursion.rs
+++ b/tests/ui/traits/bound/recursion.rs
diff --git a/src/test/ui/traits/bound/same-crate-name.rs b/tests/ui/traits/bound/same-crate-name.rs
index 8d646a414..8d646a414 100644
--- a/src/test/ui/traits/bound/same-crate-name.rs
+++ b/tests/ui/traits/bound/same-crate-name.rs
diff --git a/src/test/ui/traits/bound/same-crate-name.stderr b/tests/ui/traits/bound/same-crate-name.stderr
index f66cad77f..f66cad77f 100644
--- a/src/test/ui/traits/bound/same-crate-name.stderr
+++ b/tests/ui/traits/bound/same-crate-name.stderr
diff --git a/src/test/ui/traits/bound/sugar.rs b/tests/ui/traits/bound/sugar.rs
index 65b6f6faa..65b6f6faa 100644
--- a/src/test/ui/traits/bound/sugar.rs
+++ b/tests/ui/traits/bound/sugar.rs
diff --git a/src/test/ui/traits/bound/sugar.stderr b/tests/ui/traits/bound/sugar.stderr
index b67648c7b..b67648c7b 100644
--- a/src/test/ui/traits/bound/sugar.stderr
+++ b/tests/ui/traits/bound/sugar.stderr
diff --git a/src/test/ui/traits/bug-7183-generics.rs b/tests/ui/traits/bug-7183-generics.rs
index f53a17361..f53a17361 100644
--- a/src/test/ui/traits/bug-7183-generics.rs
+++ b/tests/ui/traits/bug-7183-generics.rs
diff --git a/src/test/ui/traits/bug-7295.rs b/tests/ui/traits/bug-7295.rs
index 156ff2ee8..156ff2ee8 100644
--- a/src/test/ui/traits/bug-7295.rs
+++ b/tests/ui/traits/bug-7295.rs
diff --git a/src/test/ui/traits/cache-issue-18209.rs b/tests/ui/traits/cache-issue-18209.rs
index 15676e455..15676e455 100644
--- a/src/test/ui/traits/cache-issue-18209.rs
+++ b/tests/ui/traits/cache-issue-18209.rs
diff --git a/src/test/ui/traits/cache-reached-depth-ice.rs b/tests/ui/traits/cache-reached-depth-ice.rs
index c36ac0857..c36ac0857 100644
--- a/src/test/ui/traits/cache-reached-depth-ice.rs
+++ b/tests/ui/traits/cache-reached-depth-ice.rs
diff --git a/src/test/ui/traits/cache-reached-depth-ice.stderr b/tests/ui/traits/cache-reached-depth-ice.stderr
index 082aa0f5c..082aa0f5c 100644
--- a/src/test/ui/traits/cache-reached-depth-ice.stderr
+++ b/tests/ui/traits/cache-reached-depth-ice.stderr
diff --git a/src/test/ui/traits/coercion-generic-bad.rs b/tests/ui/traits/coercion-generic-bad.rs
index 2e115c732..2e115c732 100644
--- a/src/test/ui/traits/coercion-generic-bad.rs
+++ b/tests/ui/traits/coercion-generic-bad.rs
diff --git a/src/test/ui/traits/coercion-generic-bad.stderr b/tests/ui/traits/coercion-generic-bad.stderr
index 93d6770eb..93d6770eb 100644
--- a/src/test/ui/traits/coercion-generic-bad.stderr
+++ b/tests/ui/traits/coercion-generic-bad.stderr
diff --git a/src/test/ui/traits/coercion-generic-regions.rs b/tests/ui/traits/coercion-generic-regions.rs
index af478df6d..af478df6d 100644
--- a/src/test/ui/traits/coercion-generic-regions.rs
+++ b/tests/ui/traits/coercion-generic-regions.rs
diff --git a/src/test/ui/traits/coercion-generic-regions.stderr b/tests/ui/traits/coercion-generic-regions.stderr
index 5cfb64901..5cfb64901 100644
--- a/src/test/ui/traits/coercion-generic-regions.stderr
+++ b/tests/ui/traits/coercion-generic-regions.stderr
diff --git a/src/test/ui/traits/coercion-generic.rs b/tests/ui/traits/coercion-generic.rs
index bf4dda495..bf4dda495 100644
--- a/src/test/ui/traits/coercion-generic.rs
+++ b/tests/ui/traits/coercion-generic.rs
diff --git a/src/test/ui/traits/coercion.rs b/tests/ui/traits/coercion.rs
index e62742bac..e62742bac 100644
--- a/src/test/ui/traits/coercion.rs
+++ b/tests/ui/traits/coercion.rs
diff --git a/src/test/ui/traits/composition-trivial.rs b/tests/ui/traits/composition-trivial.rs
index 90e5dcd68..90e5dcd68 100644
--- a/src/test/ui/traits/composition-trivial.rs
+++ b/tests/ui/traits/composition-trivial.rs
diff --git a/src/test/ui/traits/conditional-dispatch.rs b/tests/ui/traits/conditional-dispatch.rs
index dd882dce6..dd882dce6 100644
--- a/src/test/ui/traits/conditional-dispatch.rs
+++ b/tests/ui/traits/conditional-dispatch.rs
diff --git a/src/test/ui/traits/conditional-model-fn.rs b/tests/ui/traits/conditional-model-fn.rs
index ba8867003..ba8867003 100644
--- a/src/test/ui/traits/conditional-model-fn.rs
+++ b/tests/ui/traits/conditional-model-fn.rs
diff --git a/src/test/ui/traits/conservative_impl_trait.rs b/tests/ui/traits/conservative_impl_trait.rs
index 4f25e57be..4f25e57be 100644
--- a/src/test/ui/traits/conservative_impl_trait.rs
+++ b/tests/ui/traits/conservative_impl_trait.rs
diff --git a/src/test/ui/traits/copy-guessing.rs b/tests/ui/traits/copy-guessing.rs
index f031dd9ca..f031dd9ca 100644
--- a/src/test/ui/traits/copy-guessing.rs
+++ b/tests/ui/traits/copy-guessing.rs
diff --git a/src/test/ui/traits/copy-impl-cannot-normalize.rs b/tests/ui/traits/copy-impl-cannot-normalize.rs
index a78ff046e..a78ff046e 100644
--- a/src/test/ui/traits/copy-impl-cannot-normalize.rs
+++ b/tests/ui/traits/copy-impl-cannot-normalize.rs
diff --git a/tests/ui/traits/copy-impl-cannot-normalize.stderr b/tests/ui/traits/copy-impl-cannot-normalize.stderr
new file mode 100644
index 000000000..86c511c08
--- /dev/null
+++ b/tests/ui/traits/copy-impl-cannot-normalize.stderr
@@ -0,0 +1,24 @@
+error[E0277]: the trait bound `T: TraitFoo` is not satisfied
+ --> $DIR/copy-impl-cannot-normalize.rs:22:18
+ |
+LL | impl<T> Copy for Foo<T> {}
+ | ^^^^^^ the trait `TraitFoo` is not implemented for `T`
+ |
+note: required for `Foo<T>` to implement `Clone`
+ --> $DIR/copy-impl-cannot-normalize.rs:12:9
+ |
+LL | impl<T> Clone for Foo<T>
+ | ^^^^^ ^^^^^^
+LL | where
+LL | T: TraitFoo,
+ | -------- unsatisfied trait bound introduced here
+note: required by a bound in `Copy`
+ --> $SRC_DIR/core/src/marker.rs:LL:COL
+help: consider restricting type parameter `T`
+ |
+LL | impl<T: TraitFoo> Copy for Foo<T> {}
+ | ++++++++++
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/traits/copy-is-not-modulo-regions.not_static.stderr b/tests/ui/traits/copy-is-not-modulo-regions.not_static.stderr
new file mode 100644
index 000000000..edd94d201
--- /dev/null
+++ b/tests/ui/traits/copy-is-not-modulo-regions.not_static.stderr
@@ -0,0 +1,22 @@
+error[E0204]: the trait `Copy` may not be implemented for this type
+ --> $DIR/copy-is-not-modulo-regions.rs:13:21
+ |
+LL | struct Bar<'lt>(Foo<'lt>);
+ | -------- this field does not implement `Copy`
+...
+LL | impl<'any> Copy for Bar<'any> {}
+ | ^^^^^^^^^
+ |
+note: the `Copy` impl for `Foo<'any>` requires that `'any: 'static`
+ --> $DIR/copy-is-not-modulo-regions.rs:10:17
+ |
+LL | struct Bar<'lt>(Foo<'lt>);
+ | ^^^^^^^^
+help: consider restricting type parameter `'any`
+ |
+LL | impl<'any: 'static> Copy for Bar<'any> {}
+ | +++++++++
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0204`.
diff --git a/tests/ui/traits/copy-is-not-modulo-regions.rs b/tests/ui/traits/copy-is-not-modulo-regions.rs
new file mode 100644
index 000000000..adb870237
--- /dev/null
+++ b/tests/ui/traits/copy-is-not-modulo-regions.rs
@@ -0,0 +1,19 @@
+// revisions: not_static yes_static
+//[yes_static] check-pass
+
+#[derive(Clone)]
+struct Foo<'lt>(&'lt ());
+
+impl Copy for Foo<'static> {}
+
+#[derive(Clone)]
+struct Bar<'lt>(Foo<'lt>);
+
+#[cfg(not_static)]
+impl<'any> Copy for Bar<'any> {}
+//[not_static]~^ the trait `Copy` may not be implemented for this type
+
+#[cfg(yes_static)]
+impl<'any> Copy for Bar<'static> {}
+
+fn main() {}
diff --git a/tests/ui/traits/copy-requires-self-wf.rs b/tests/ui/traits/copy-requires-self-wf.rs
new file mode 100644
index 000000000..9abfdfab9
--- /dev/null
+++ b/tests/ui/traits/copy-requires-self-wf.rs
@@ -0,0 +1,14 @@
+// check-pass
+
+#[derive(Clone)]
+struct A<'a, T>(&'a T);
+
+impl<'a, T: Copy + 'a> Copy for A<'a, T> {}
+
+#[derive(Clone)]
+struct B<'a, T>(A<'a, T>);
+
+// `T: '_` should be implied by `WF(B<'_, T>)`.
+impl<T: Copy> Copy for B<'_, T> {}
+
+fn main() {}
diff --git a/src/test/ui/traits/cycle-cache-err-60010.rs b/tests/ui/traits/cycle-cache-err-60010.rs
index 94e718317..94e718317 100644
--- a/src/test/ui/traits/cycle-cache-err-60010.rs
+++ b/tests/ui/traits/cycle-cache-err-60010.rs
diff --git a/src/test/ui/traits/cycle-cache-err-60010.stderr b/tests/ui/traits/cycle-cache-err-60010.stderr
index 2478eb354..eeee99760 100644
--- a/src/test/ui/traits/cycle-cache-err-60010.stderr
+++ b/tests/ui/traits/cycle-cache-err-60010.stderr
@@ -22,11 +22,17 @@ note: required for `RootDatabase` to implement `SourceDatabase`
|
LL | impl<T> SourceDatabase for T
| ^^^^^^^^^^^^^^ ^
+LL | where
+LL | T: RefUnwindSafe,
+ | ------------- unsatisfied trait bound introduced here
note: required for `ParseQuery` to implement `Query<RootDatabase>`
--> $DIR/cycle-cache-err-60010.rs:37:10
|
LL | impl<DB> Query<DB> for ParseQuery
| ^^^^^^^^^ ^^^^^^^^^^
+LL | where
+LL | DB: SourceDatabase,
+ | -------------- unsatisfied trait bound introduced here
error: aborting due to previous error
diff --git a/src/test/ui/traits/cycle-generic-bound.rs b/tests/ui/traits/cycle-generic-bound.rs
index 9241f3789..9241f3789 100644
--- a/src/test/ui/traits/cycle-generic-bound.rs
+++ b/tests/ui/traits/cycle-generic-bound.rs
diff --git a/src/test/ui/traits/cycle-type-trait.rs b/tests/ui/traits/cycle-type-trait.rs
index c62d01403..c62d01403 100644
--- a/src/test/ui/traits/cycle-type-trait.rs
+++ b/tests/ui/traits/cycle-type-trait.rs
diff --git a/src/test/ui/traits/default-method/auxiliary/xc.rs b/tests/ui/traits/default-method/auxiliary/xc.rs
index 0fb26af80..0fb26af80 100644
--- a/src/test/ui/traits/default-method/auxiliary/xc.rs
+++ b/tests/ui/traits/default-method/auxiliary/xc.rs
diff --git a/src/test/ui/traits/default-method/auxiliary/xc_2.rs b/tests/ui/traits/default-method/auxiliary/xc_2.rs
index 979233820..979233820 100644
--- a/src/test/ui/traits/default-method/auxiliary/xc_2.rs
+++ b/tests/ui/traits/default-method/auxiliary/xc_2.rs
diff --git a/src/test/ui/traits/default-method/bound-subst.rs b/tests/ui/traits/default-method/bound-subst.rs
index 6a5d5c8ba..6a5d5c8ba 100644
--- a/src/test/ui/traits/default-method/bound-subst.rs
+++ b/tests/ui/traits/default-method/bound-subst.rs
diff --git a/src/test/ui/traits/default-method/bound-subst2.rs b/tests/ui/traits/default-method/bound-subst2.rs
index 78eabba2d..78eabba2d 100644
--- a/src/test/ui/traits/default-method/bound-subst2.rs
+++ b/tests/ui/traits/default-method/bound-subst2.rs
diff --git a/src/test/ui/traits/default-method/bound-subst3.rs b/tests/ui/traits/default-method/bound-subst3.rs
index dd39dec4b..dd39dec4b 100644
--- a/src/test/ui/traits/default-method/bound-subst3.rs
+++ b/tests/ui/traits/default-method/bound-subst3.rs
diff --git a/src/test/ui/traits/default-method/bound-subst4.rs b/tests/ui/traits/default-method/bound-subst4.rs
index ef1330645..ef1330645 100644
--- a/src/test/ui/traits/default-method/bound-subst4.rs
+++ b/tests/ui/traits/default-method/bound-subst4.rs
diff --git a/src/test/ui/traits/default-method/bound.rs b/tests/ui/traits/default-method/bound.rs
index 0855a9db8..0855a9db8 100644
--- a/src/test/ui/traits/default-method/bound.rs
+++ b/tests/ui/traits/default-method/bound.rs
diff --git a/src/test/ui/traits/default-method/macro.rs b/tests/ui/traits/default-method/macro.rs
index 2b50ee9b4..2b50ee9b4 100644
--- a/src/test/ui/traits/default-method/macro.rs
+++ b/tests/ui/traits/default-method/macro.rs
diff --git a/src/test/ui/traits/default-method/mut.rs b/tests/ui/traits/default-method/mut.rs
index 5f8e983b0..5f8e983b0 100644
--- a/src/test/ui/traits/default-method/mut.rs
+++ b/tests/ui/traits/default-method/mut.rs
diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of.rs b/tests/ui/traits/default-method/rustc_must_implement_one_of.rs
index 5ba2f5ce3..5ba2f5ce3 100644
--- a/src/test/ui/traits/default-method/rustc_must_implement_one_of.rs
+++ b/tests/ui/traits/default-method/rustc_must_implement_one_of.rs
diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of.stderr b/tests/ui/traits/default-method/rustc_must_implement_one_of.stderr
index 5a4dd1388..5a4dd1388 100644
--- a/src/test/ui/traits/default-method/rustc_must_implement_one_of.stderr
+++ b/tests/ui/traits/default-method/rustc_must_implement_one_of.stderr
diff --git a/tests/ui/traits/default-method/rustc_must_implement_one_of_duplicates.rs b/tests/ui/traits/default-method/rustc_must_implement_one_of_duplicates.rs
new file mode 100644
index 000000000..8db5fa615
--- /dev/null
+++ b/tests/ui/traits/default-method/rustc_must_implement_one_of_duplicates.rs
@@ -0,0 +1,19 @@
+#![feature(rustc_attrs)]
+
+#[rustc_must_implement_one_of(a, a)]
+//~^ functions names are duplicated
+trait Trait {
+ fn a() {}
+}
+
+#[rustc_must_implement_one_of(b, a, a, c, b, c)]
+//~^ functions names are duplicated
+//~| functions names are duplicated
+//~| functions names are duplicated
+trait Trait1 {
+ fn a() {}
+ fn b() {}
+ fn c() {}
+}
+
+fn main() {}
diff --git a/tests/ui/traits/default-method/rustc_must_implement_one_of_duplicates.stderr b/tests/ui/traits/default-method/rustc_must_implement_one_of_duplicates.stderr
new file mode 100644
index 000000000..cd1476a6e
--- /dev/null
+++ b/tests/ui/traits/default-method/rustc_must_implement_one_of_duplicates.stderr
@@ -0,0 +1,34 @@
+error: functions names are duplicated
+ --> $DIR/rustc_must_implement_one_of_duplicates.rs:3:31
+ |
+LL | #[rustc_must_implement_one_of(a, a)]
+ | ^ ^
+ |
+ = note: all `#[rustc_must_implement_one_of]` arguments must be unique
+
+error: functions names are duplicated
+ --> $DIR/rustc_must_implement_one_of_duplicates.rs:9:34
+ |
+LL | #[rustc_must_implement_one_of(b, a, a, c, b, c)]
+ | ^ ^
+ |
+ = note: all `#[rustc_must_implement_one_of]` arguments must be unique
+
+error: functions names are duplicated
+ --> $DIR/rustc_must_implement_one_of_duplicates.rs:9:31
+ |
+LL | #[rustc_must_implement_one_of(b, a, a, c, b, c)]
+ | ^ ^
+ |
+ = note: all `#[rustc_must_implement_one_of]` arguments must be unique
+
+error: functions names are duplicated
+ --> $DIR/rustc_must_implement_one_of_duplicates.rs:9:40
+ |
+LL | #[rustc_must_implement_one_of(b, a, a, c, b, c)]
+ | ^ ^
+ |
+ = note: all `#[rustc_must_implement_one_of]` arguments must be unique
+
+error: aborting due to 4 previous errors
+
diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of_gated.rs b/tests/ui/traits/default-method/rustc_must_implement_one_of_gated.rs
index ec2995872..ec2995872 100644
--- a/src/test/ui/traits/default-method/rustc_must_implement_one_of_gated.rs
+++ b/tests/ui/traits/default-method/rustc_must_implement_one_of_gated.rs
diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of_gated.stderr b/tests/ui/traits/default-method/rustc_must_implement_one_of_gated.stderr
index 228bc3e35..228bc3e35 100644
--- a/src/test/ui/traits/default-method/rustc_must_implement_one_of_gated.stderr
+++ b/tests/ui/traits/default-method/rustc_must_implement_one_of_gated.stderr
diff --git a/tests/ui/traits/default-method/rustc_must_implement_one_of_misuse.rs b/tests/ui/traits/default-method/rustc_must_implement_one_of_misuse.rs
new file mode 100644
index 000000000..b1b91966c
--- /dev/null
+++ b/tests/ui/traits/default-method/rustc_must_implement_one_of_misuse.rs
@@ -0,0 +1,46 @@
+#![feature(rustc_attrs)]
+
+#[rustc_must_implement_one_of(a, b)]
+//~^ function not found in this trait
+//~| function not found in this trait
+trait Tr0 {}
+
+#[rustc_must_implement_one_of(a, b)]
+//~^ function not found in this trait
+trait Tr1 {
+ fn a() {}
+}
+
+#[rustc_must_implement_one_of(a)]
+//~^ the `#[rustc_must_implement_one_of]` attribute must be used with at least 2 args
+trait Tr2 {
+ fn a() {}
+}
+
+#[rustc_must_implement_one_of]
+//~^ malformed `rustc_must_implement_one_of` attribute input
+trait Tr3 {}
+
+#[rustc_must_implement_one_of(A, B)]
+trait Tr4 {
+ const A: u8 = 1; //~ not a function
+
+ type B; //~ not a function
+}
+
+#[rustc_must_implement_one_of(a, b)]
+trait Tr5 {
+ fn a(); //~ function doesn't have a default implementation
+
+ fn b(); //~ function doesn't have a default implementation
+}
+
+#[rustc_must_implement_one_of(abc, xyz)]
+//~^ attribute should be applied to a trait
+fn function() {}
+
+#[rustc_must_implement_one_of(abc, xyz)]
+//~^ attribute should be applied to a trait
+struct Struct {}
+
+fn main() {}
diff --git a/src/test/ui/traits/default-method/rustc_must_implement_one_of_misuse.stderr b/tests/ui/traits/default-method/rustc_must_implement_one_of_misuse.stderr
index 869184f0d..38e692521 100644
--- a/src/test/ui/traits/default-method/rustc_must_implement_one_of_misuse.stderr
+++ b/tests/ui/traits/default-method/rustc_must_implement_one_of_misuse.stderr
@@ -22,19 +22,19 @@ LL |
LL | struct Struct {}
| ---------------- not a trait
-error: Function not found in this trait
+error: function not found in this trait
--> $DIR/rustc_must_implement_one_of_misuse.rs:3:31
|
LL | #[rustc_must_implement_one_of(a, b)]
| ^
-error: Function not found in this trait
+error: function not found in this trait
--> $DIR/rustc_must_implement_one_of_misuse.rs:3:34
|
LL | #[rustc_must_implement_one_of(a, b)]
| ^
-error: Function not found in this trait
+error: function not found in this trait
--> $DIR/rustc_must_implement_one_of_misuse.rs:8:34
|
LL | #[rustc_must_implement_one_of(a, b)]
@@ -46,7 +46,7 @@ error: the `#[rustc_must_implement_one_of]` attribute must be used with at least
LL | #[rustc_must_implement_one_of(a)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-error: Not a function
+error: not a function
--> $DIR/rustc_must_implement_one_of_misuse.rs:26:5
|
LL | const A: u8 = 1;
@@ -57,9 +57,9 @@ note: required by this annotation
|
LL | #[rustc_must_implement_one_of(A, B)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- = note: All `#[rustc_must_implement_one_of]` arguments must be associated function names
+ = note: all `#[rustc_must_implement_one_of]` arguments must be associated function names
-error: Not a function
+error: not a function
--> $DIR/rustc_must_implement_one_of_misuse.rs:28:5
|
LL | type B;
@@ -70,9 +70,9 @@ note: required by this annotation
|
LL | #[rustc_must_implement_one_of(A, B)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- = note: All `#[rustc_must_implement_one_of]` arguments must be associated function names
+ = note: all `#[rustc_must_implement_one_of]` arguments must be associated function names
-error: This function doesn't have a default implementation
+error: function doesn't have a default implementation
--> $DIR/rustc_must_implement_one_of_misuse.rs:33:5
|
LL | fn a();
@@ -84,7 +84,7 @@ note: required by this annotation
LL | #[rustc_must_implement_one_of(a, b)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-error: This function doesn't have a default implementation
+error: function doesn't have a default implementation
--> $DIR/rustc_must_implement_one_of_misuse.rs:35:5
|
LL | fn b();
diff --git a/src/test/ui/traits/default-method/self.rs b/tests/ui/traits/default-method/self.rs
index cdf4d1e14..cdf4d1e14 100644
--- a/src/test/ui/traits/default-method/self.rs
+++ b/tests/ui/traits/default-method/self.rs
diff --git a/src/test/ui/traits/default-method/supervtable.rs b/tests/ui/traits/default-method/supervtable.rs
index 939ad5135..939ad5135 100644
--- a/src/test/ui/traits/default-method/supervtable.rs
+++ b/tests/ui/traits/default-method/supervtable.rs
diff --git a/src/test/ui/traits/default-method/trivial.rs b/tests/ui/traits/default-method/trivial.rs
index dc41938ec..dc41938ec 100644
--- a/src/test/ui/traits/default-method/trivial.rs
+++ b/tests/ui/traits/default-method/trivial.rs
diff --git a/src/test/ui/traits/default-method/xc-2.rs b/tests/ui/traits/default-method/xc-2.rs
index 1de61dcf8..1de61dcf8 100644
--- a/src/test/ui/traits/default-method/xc-2.rs
+++ b/tests/ui/traits/default-method/xc-2.rs
diff --git a/src/test/ui/traits/default-method/xc.rs b/tests/ui/traits/default-method/xc.rs
index 76a1573d6..76a1573d6 100644
--- a/src/test/ui/traits/default-method/xc.rs
+++ b/tests/ui/traits/default-method/xc.rs
diff --git a/src/test/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.rs b/tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.rs
index 9a444be50..9a444be50 100644
--- a/src/test/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.rs
+++ b/tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.rs
diff --git a/src/test/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr b/tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr
index 57b2587ae..57b2587ae 100644
--- a/src/test/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr
+++ b/tests/ui/traits/do-not-mention-type-params-by-name-in-suggestion-issue-96292.stderr
diff --git a/src/test/ui/traits/duplicate-methods.rs b/tests/ui/traits/duplicate-methods.rs
index 1f9bdf56f..1f9bdf56f 100644
--- a/src/test/ui/traits/duplicate-methods.rs
+++ b/tests/ui/traits/duplicate-methods.rs
diff --git a/src/test/ui/traits/duplicate-methods.stderr b/tests/ui/traits/duplicate-methods.stderr
index 6aa88d0df..6aa88d0df 100644
--- a/src/test/ui/traits/duplicate-methods.stderr
+++ b/tests/ui/traits/duplicate-methods.stderr
diff --git a/src/test/ui/traits/dyn-trait.rs b/tests/ui/traits/dyn-trait.rs
index e1c1a8de5..e1c1a8de5 100644
--- a/src/test/ui/traits/dyn-trait.rs
+++ b/tests/ui/traits/dyn-trait.rs
diff --git a/src/test/ui/traits/early-vtbl-resolution.rs b/tests/ui/traits/early-vtbl-resolution.rs
index f4b69c140..f4b69c140 100644
--- a/src/test/ui/traits/early-vtbl-resolution.rs
+++ b/tests/ui/traits/early-vtbl-resolution.rs
diff --git a/src/test/ui/traits/elaborate-type-region.rs b/tests/ui/traits/elaborate-type-region.rs
index 03aef0184..03aef0184 100644
--- a/src/test/ui/traits/elaborate-type-region.rs
+++ b/tests/ui/traits/elaborate-type-region.rs
diff --git a/src/test/ui/traits/false-ambiguity-where-clause-builtin-bound.rs b/tests/ui/traits/false-ambiguity-where-clause-builtin-bound.rs
index 3413db6a6..3413db6a6 100644
--- a/src/test/ui/traits/false-ambiguity-where-clause-builtin-bound.rs
+++ b/tests/ui/traits/false-ambiguity-where-clause-builtin-bound.rs
diff --git a/src/test/ui/traits/fmt-pointer-trait.rs b/tests/ui/traits/fmt-pointer-trait.rs
index b7876b9bd..b7876b9bd 100644
--- a/src/test/ui/traits/fmt-pointer-trait.rs
+++ b/tests/ui/traits/fmt-pointer-trait.rs
diff --git a/tests/ui/traits/fn-trait-cast-diagnostic.rs b/tests/ui/traits/fn-trait-cast-diagnostic.rs
new file mode 100644
index 000000000..e20aa210e
--- /dev/null
+++ b/tests/ui/traits/fn-trait-cast-diagnostic.rs
@@ -0,0 +1,26 @@
+// There are two different instances to check that even if
+// the trait is implemented for the output of a function,
+// it will still be displayed if the function itself implements a trait.
+trait Foo {}
+
+impl Foo for fn() -> bool {}
+impl Foo for bool {}
+
+fn example() -> bool {
+ true
+}
+
+trait NoOtherFoo {}
+
+impl NoOtherFoo for fn() -> bool {}
+
+fn do_on_foo(v: impl Foo) {}
+fn do_on_single_foo(v: impl NoOtherFoo) {}
+
+fn main() {
+ do_on_foo(example);
+ //~^ ERROR the trait bound
+
+ do_on_single_foo(example);
+ //~^ ERROR the trait bound
+}
diff --git a/tests/ui/traits/fn-trait-cast-diagnostic.stderr b/tests/ui/traits/fn-trait-cast-diagnostic.stderr
new file mode 100644
index 000000000..6851dcdd5
--- /dev/null
+++ b/tests/ui/traits/fn-trait-cast-diagnostic.stderr
@@ -0,0 +1,43 @@
+error[E0277]: the trait bound `fn() -> bool {example}: Foo` is not satisfied
+ --> $DIR/fn-trait-cast-diagnostic.rs:21:15
+ |
+LL | do_on_foo(example);
+ | --------- ^^^^^^^ the trait `Foo` is not implemented for fn item `fn() -> bool {example}`
+ | |
+ | required by a bound introduced by this call
+ |
+note: required by a bound in `do_on_foo`
+ --> $DIR/fn-trait-cast-diagnostic.rs:17:22
+ |
+LL | fn do_on_foo(v: impl Foo) {}
+ | ^^^ required by this bound in `do_on_foo`
+help: use parentheses to call this function
+ |
+LL | do_on_foo(example());
+ | ++
+help: the trait `Foo` is implemented for fn pointer `fn() -> bool`, try casting using `as`
+ |
+LL | do_on_foo(example as fn() -> bool);
+ | +++++++++++++++
+
+error[E0277]: the trait bound `fn() -> bool {example}: NoOtherFoo` is not satisfied
+ --> $DIR/fn-trait-cast-diagnostic.rs:24:22
+ |
+LL | do_on_single_foo(example);
+ | ---------------- ^^^^^^^ the trait `NoOtherFoo` is not implemented for fn item `fn() -> bool {example}`
+ | |
+ | required by a bound introduced by this call
+ |
+note: required by a bound in `do_on_single_foo`
+ --> $DIR/fn-trait-cast-diagnostic.rs:18:29
+ |
+LL | fn do_on_single_foo(v: impl NoOtherFoo) {}
+ | ^^^^^^^^^^ required by this bound in `do_on_single_foo`
+help: the trait `NoOtherFoo` is implemented for fn pointer `fn() -> bool`, try casting using `as`
+ |
+LL | do_on_single_foo(example as fn() -> bool);
+ | +++++++++++++++
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/traits/generic.rs b/tests/ui/traits/generic.rs
index 80efe1c93..80efe1c93 100644
--- a/src/test/ui/traits/generic.rs
+++ b/tests/ui/traits/generic.rs
diff --git a/tests/ui/traits/ignore-err-impls.rs b/tests/ui/traits/ignore-err-impls.rs
new file mode 100644
index 000000000..67e880b00
--- /dev/null
+++ b/tests/ui/traits/ignore-err-impls.rs
@@ -0,0 +1,9 @@
+pub struct S;
+
+trait Generic<T> {}
+
+impl<'a, T> Generic<&'a T> for S {}
+impl Generic<Type> for S {}
+//~^ ERROR cannot find type `Type` in this scope
+
+fn main() {}
diff --git a/tests/ui/traits/ignore-err-impls.stderr b/tests/ui/traits/ignore-err-impls.stderr
new file mode 100644
index 000000000..45bd533b5
--- /dev/null
+++ b/tests/ui/traits/ignore-err-impls.stderr
@@ -0,0 +1,14 @@
+error[E0412]: cannot find type `Type` in this scope
+ --> $DIR/ignore-err-impls.rs:6:14
+ |
+LL | impl Generic<Type> for S {}
+ | ^^^^ not found in this scope
+ |
+help: you might be missing a type parameter
+ |
+LL | impl<Type> Generic<Type> for S {}
+ | ++++++
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0412`.
diff --git a/src/test/ui/traits/impl-1.rs b/tests/ui/traits/impl-1.rs
index d22ac72d1..d22ac72d1 100644
--- a/src/test/ui/traits/impl-1.rs
+++ b/tests/ui/traits/impl-1.rs
diff --git a/src/test/ui/traits/impl-1.stderr b/tests/ui/traits/impl-1.stderr
index 7694e3f5c..7694e3f5c 100644
--- a/src/test/ui/traits/impl-1.stderr
+++ b/tests/ui/traits/impl-1.stderr
diff --git a/src/test/ui/traits/impl-2.rs b/tests/ui/traits/impl-2.rs
index 804ffec12..804ffec12 100644
--- a/src/test/ui/traits/impl-2.rs
+++ b/tests/ui/traits/impl-2.rs
diff --git a/src/test/ui/traits/impl-bounds-checking.rs b/tests/ui/traits/impl-bounds-checking.rs
index 5e65a27bf..5e65a27bf 100644
--- a/src/test/ui/traits/impl-bounds-checking.rs
+++ b/tests/ui/traits/impl-bounds-checking.rs
diff --git a/src/test/ui/traits/impl-bounds-checking.stderr b/tests/ui/traits/impl-bounds-checking.stderr
index b01bacdb8..1f969efe1 100644
--- a/src/test/ui/traits/impl-bounds-checking.stderr
+++ b/tests/ui/traits/impl-bounds-checking.stderr
@@ -1,8 +1,8 @@
error[E0277]: the trait bound `isize: Clone2` is not satisfied
- --> $DIR/impl-bounds-checking.rs:10:6
+ --> $DIR/impl-bounds-checking.rs:10:24
|
LL | impl Getter<isize> for isize {
- | ^^^^^^^^^^^^^ the trait `Clone2` is not implemented for `isize`
+ | ^^^^^ the trait `Clone2` is not implemented for `isize`
|
note: required by a bound in `Getter`
--> $DIR/impl-bounds-checking.rs:6:17
diff --git a/src/test/ui/traits/impl-can-not-have-untraitful-items.rs b/tests/ui/traits/impl-can-not-have-untraitful-items.rs
index 0c885447b..0c885447b 100644
--- a/src/test/ui/traits/impl-can-not-have-untraitful-items.rs
+++ b/tests/ui/traits/impl-can-not-have-untraitful-items.rs
diff --git a/src/test/ui/traits/impl-can-not-have-untraitful-items.stderr b/tests/ui/traits/impl-can-not-have-untraitful-items.stderr
index 7f56f34ea..7f56f34ea 100644
--- a/src/test/ui/traits/impl-can-not-have-untraitful-items.stderr
+++ b/tests/ui/traits/impl-can-not-have-untraitful-items.stderr
diff --git a/src/test/ui/traits/impl-different-num-params.rs b/tests/ui/traits/impl-different-num-params.rs
index 53400622d..53400622d 100644
--- a/src/test/ui/traits/impl-different-num-params.rs
+++ b/tests/ui/traits/impl-different-num-params.rs
diff --git a/src/test/ui/traits/impl-different-num-params.stderr b/tests/ui/traits/impl-different-num-params.stderr
index 910ba3510..910ba3510 100644
--- a/src/test/ui/traits/impl-different-num-params.stderr
+++ b/tests/ui/traits/impl-different-num-params.stderr
diff --git a/src/test/ui/traits/impl-evaluation-order.rs b/tests/ui/traits/impl-evaluation-order.rs
index 57809d89a..57809d89a 100644
--- a/src/test/ui/traits/impl-evaluation-order.rs
+++ b/tests/ui/traits/impl-evaluation-order.rs
diff --git a/src/test/ui/traits/impl-for-module.rs b/tests/ui/traits/impl-for-module.rs
index 9004627c5..9004627c5 100644
--- a/src/test/ui/traits/impl-for-module.rs
+++ b/tests/ui/traits/impl-for-module.rs
diff --git a/src/test/ui/traits/impl-for-module.stderr b/tests/ui/traits/impl-for-module.stderr
index 6ec4083b5..6ec4083b5 100644
--- a/src/test/ui/traits/impl-for-module.stderr
+++ b/tests/ui/traits/impl-for-module.stderr
diff --git a/src/test/ui/traits/impl-implicit-trait.rs b/tests/ui/traits/impl-implicit-trait.rs
index fac2bcce2..fac2bcce2 100644
--- a/src/test/ui/traits/impl-implicit-trait.rs
+++ b/tests/ui/traits/impl-implicit-trait.rs
diff --git a/src/test/ui/traits/impl-inherent-prefer-over-trait.rs b/tests/ui/traits/impl-inherent-prefer-over-trait.rs
index 827607888..827607888 100644
--- a/src/test/ui/traits/impl-inherent-prefer-over-trait.rs
+++ b/tests/ui/traits/impl-inherent-prefer-over-trait.rs
diff --git a/src/test/ui/traits/impl-method-mismatch.rs b/tests/ui/traits/impl-method-mismatch.rs
index 683b1c1aa..62580755c 100644
--- a/src/test/ui/traits/impl-method-mismatch.rs
+++ b/tests/ui/traits/impl-method-mismatch.rs
@@ -6,8 +6,8 @@ impl Mumbo for usize {
// Cannot have a larger effect than the trait:
unsafe fn jumbo(&self, x: &usize) { *self + *x; }
//~^ ERROR method `jumbo` has an incompatible type for trait
- //~| expected fn pointer `fn
- //~| found fn pointer `unsafe fn
+ //~| expected signature `fn
+ //~| found signature `unsafe fn
}
fn main() {}
diff --git a/src/test/ui/traits/impl-method-mismatch.stderr b/tests/ui/traits/impl-method-mismatch.stderr
index 30aa97d29..252b5aff9 100644
--- a/src/test/ui/traits/impl-method-mismatch.stderr
+++ b/tests/ui/traits/impl-method-mismatch.stderr
@@ -9,8 +9,8 @@ note: type in trait
|
LL | fn jumbo(&self, x: &usize) -> usize;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- = note: expected fn pointer `fn(&usize, &usize) -> usize`
- found fn pointer `unsafe fn(&usize, &usize)`
+ = note: expected signature `fn(&usize, &usize) -> usize`
+ found signature `unsafe fn(&usize, &usize)`
error: aborting due to previous error
diff --git a/src/test/ui/traits/impl-object-overlap-issue-23853.rs b/tests/ui/traits/impl-object-overlap-issue-23853.rs
index e490967b6..e490967b6 100644
--- a/src/test/ui/traits/impl-object-overlap-issue-23853.rs
+++ b/tests/ui/traits/impl-object-overlap-issue-23853.rs
diff --git a/src/test/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.rs b/tests/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.rs
index 05b9db972..05b9db972 100644
--- a/src/test/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.rs
+++ b/tests/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.rs
diff --git a/src/test/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.stderr b/tests/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.stderr
index 5572c6515..1bace8ab2 100644
--- a/src/test/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.stderr
+++ b/tests/ui/traits/impl-of-supertrait-has-wrong-lifetime-parameters.stderr
@@ -1,8 +1,8 @@
error[E0495]: cannot infer an appropriate lifetime for lifetime parameter `'b` due to conflicting requirements
- --> $DIR/impl-of-supertrait-has-wrong-lifetime-parameters.rs:24:13
+ --> $DIR/impl-of-supertrait-has-wrong-lifetime-parameters.rs:24:28
|
LL | impl<'a,'b> T2<'a, 'b> for S<'a, 'b> {
- | ^^^^^^^^^^
+ | ^^^^^^^^^
|
note: first, the lifetime cannot outlive the lifetime `'a` as defined here...
--> $DIR/impl-of-supertrait-has-wrong-lifetime-parameters.rs:24:6
@@ -15,10 +15,10 @@ note: ...but the lifetime must also be valid for the lifetime `'b` as defined he
LL | impl<'a,'b> T2<'a, 'b> for S<'a, 'b> {
| ^^
note: ...so that the types are compatible
- --> $DIR/impl-of-supertrait-has-wrong-lifetime-parameters.rs:24:13
+ --> $DIR/impl-of-supertrait-has-wrong-lifetime-parameters.rs:24:28
|
LL | impl<'a,'b> T2<'a, 'b> for S<'a, 'b> {
- | ^^^^^^^^^^
+ | ^^^^^^^^^
= note: expected `T1<'a>`
found `T1<'_>`
diff --git a/src/test/ui/traits/impl.rs b/tests/ui/traits/impl.rs
index f512d91eb..f512d91eb 100644
--- a/src/test/ui/traits/impl.rs
+++ b/tests/ui/traits/impl.rs
diff --git a/src/test/ui/traits/impl_trait_as_trait_return_position.rs b/tests/ui/traits/impl_trait_as_trait_return_position.rs
index c3325fd80..c3325fd80 100644
--- a/src/test/ui/traits/impl_trait_as_trait_return_position.rs
+++ b/tests/ui/traits/impl_trait_as_trait_return_position.rs
diff --git a/src/test/ui/traits/inductive-overflow/lifetime.rs b/tests/ui/traits/inductive-overflow/lifetime.rs
index 004e47737..bf536d21c 100644
--- a/src/test/ui/traits/inductive-overflow/lifetime.rs
+++ b/tests/ui/traits/inductive-overflow/lifetime.rs
@@ -16,6 +16,7 @@ struct C<'a>(&'a ());
struct X<T: Y>(T::P);
impl<T: NotAuto> NotAuto for Box<T> {} //~ NOTE: required
+//~^ NOTE unsatisfied trait bound introduced here
impl<T: Y> NotAuto for X<T> where T::P: NotAuto {}
impl<'a> NotAuto for C<'a> {}
diff --git a/src/test/ui/traits/inductive-overflow/lifetime.stderr b/tests/ui/traits/inductive-overflow/lifetime.stderr
index b72d53bdd..357e59991 100644
--- a/src/test/ui/traits/inductive-overflow/lifetime.stderr
+++ b/tests/ui/traits/inductive-overflow/lifetime.stderr
@@ -1,5 +1,5 @@
error[E0275]: overflow evaluating the requirement `X<C<'_>>: NotAuto`
- --> $DIR/lifetime.rs:28:5
+ --> $DIR/lifetime.rs:29:5
|
LL | is_send::<X<C<'static>>>();
| ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -8,11 +8,13 @@ note: required for `Box<X<C<'_>>>` to implement `NotAuto`
--> $DIR/lifetime.rs:18:18
|
LL | impl<T: NotAuto> NotAuto for Box<T> {}
- | ^^^^^^^ ^^^^^^
+ | ------- ^^^^^^^ ^^^^^^
+ | |
+ | unsatisfied trait bound introduced here
= note: 3 redundant requirements hidden
= note: required for `X<C<'static>>` to implement `NotAuto`
note: required by a bound in `is_send`
- --> $DIR/lifetime.rs:22:15
+ --> $DIR/lifetime.rs:23:15
|
LL | fn is_send<S: NotAuto>() {}
| ^^^^^^^ required by this bound in `is_send`
diff --git a/src/test/ui/traits/inductive-overflow/simultaneous.rs b/tests/ui/traits/inductive-overflow/simultaneous.rs
index 40ac92146..40ac92146 100644
--- a/src/test/ui/traits/inductive-overflow/simultaneous.rs
+++ b/tests/ui/traits/inductive-overflow/simultaneous.rs
diff --git a/src/test/ui/traits/inductive-overflow/simultaneous.stderr b/tests/ui/traits/inductive-overflow/simultaneous.stderr
index 09930e60e..e3b4ec07d 100644
--- a/src/test/ui/traits/inductive-overflow/simultaneous.stderr
+++ b/tests/ui/traits/inductive-overflow/simultaneous.stderr
@@ -8,7 +8,9 @@ note: required for `{integer}` to implement `Combo`
--> $DIR/simultaneous.rs:11:34
|
LL | impl<T: Tweedledee + Tweedledum> Combo for T {}
- | ^^^^^ ^
+ | ---------- ^^^^^ ^
+ | |
+ | unsatisfied trait bound introduced here
note: required by a bound in `is_ee`
--> $DIR/simultaneous.rs:13:13
|
diff --git a/src/test/ui/traits/inductive-overflow/supertrait-auto-trait.rs b/tests/ui/traits/inductive-overflow/supertrait-auto-trait.rs
index 5fea47a1b..5fea47a1b 100644
--- a/src/test/ui/traits/inductive-overflow/supertrait-auto-trait.rs
+++ b/tests/ui/traits/inductive-overflow/supertrait-auto-trait.rs
diff --git a/src/test/ui/traits/inductive-overflow/supertrait-auto-trait.stderr b/tests/ui/traits/inductive-overflow/supertrait-auto-trait.stderr
index 3ec288d13..3ec288d13 100644
--- a/src/test/ui/traits/inductive-overflow/supertrait-auto-trait.stderr
+++ b/tests/ui/traits/inductive-overflow/supertrait-auto-trait.stderr
diff --git a/src/test/ui/traits/inductive-overflow/supertrait.rs b/tests/ui/traits/inductive-overflow/supertrait.rs
index c7aa4d90f..c7aa4d90f 100644
--- a/src/test/ui/traits/inductive-overflow/supertrait.rs
+++ b/tests/ui/traits/inductive-overflow/supertrait.rs
diff --git a/src/test/ui/traits/inductive-overflow/supertrait.stderr b/tests/ui/traits/inductive-overflow/supertrait.stderr
index 4b862cf79..b537ecf17 100644
--- a/src/test/ui/traits/inductive-overflow/supertrait.stderr
+++ b/tests/ui/traits/inductive-overflow/supertrait.stderr
@@ -8,7 +8,9 @@ note: required for `NoClone` to implement `Magic`
--> $DIR/supertrait.rs:5:16
|
LL | impl<T: Magic> Magic for T {}
- | ^^^^^ ^
+ | ----- ^^^^^ ^
+ | |
+ | unsatisfied trait bound introduced here
note: required by a bound in `copy`
--> $DIR/supertrait.rs:7:12
|
diff --git a/src/test/ui/traits/inductive-overflow/two-traits.rs b/tests/ui/traits/inductive-overflow/two-traits.rs
index 463b55d85..463b55d85 100644
--- a/src/test/ui/traits/inductive-overflow/two-traits.rs
+++ b/tests/ui/traits/inductive-overflow/two-traits.rs
diff --git a/src/test/ui/traits/inductive-overflow/two-traits.stderr b/tests/ui/traits/inductive-overflow/two-traits.stderr
index 0d0bf8861..0d0bf8861 100644
--- a/src/test/ui/traits/inductive-overflow/two-traits.stderr
+++ b/tests/ui/traits/inductive-overflow/two-traits.stderr
diff --git a/src/test/ui/traits/infer-from-object-issue-26952.rs b/tests/ui/traits/infer-from-object-issue-26952.rs
index ed258dbb2..ed258dbb2 100644
--- a/src/test/ui/traits/infer-from-object-issue-26952.rs
+++ b/tests/ui/traits/infer-from-object-issue-26952.rs
diff --git a/src/test/ui/traits/inherent-method-order.rs b/tests/ui/traits/inherent-method-order.rs
index f632ae8a9..f632ae8a9 100644
--- a/src/test/ui/traits/inherent-method-order.rs
+++ b/tests/ui/traits/inherent-method-order.rs
diff --git a/src/test/ui/traits/inheritance/auto-xc-2.rs b/tests/ui/traits/inheritance/auto-xc-2.rs
index f2130228d..f2130228d 100644
--- a/src/test/ui/traits/inheritance/auto-xc-2.rs
+++ b/tests/ui/traits/inheritance/auto-xc-2.rs
diff --git a/src/test/ui/traits/inheritance/auto-xc.rs b/tests/ui/traits/inheritance/auto-xc.rs
index 3d5ae182a..3d5ae182a 100644
--- a/src/test/ui/traits/inheritance/auto-xc.rs
+++ b/tests/ui/traits/inheritance/auto-xc.rs
diff --git a/src/test/ui/traits/inheritance/auto.rs b/tests/ui/traits/inheritance/auto.rs
index 0be67a55e..0be67a55e 100644
--- a/src/test/ui/traits/inheritance/auto.rs
+++ b/tests/ui/traits/inheritance/auto.rs
diff --git a/src/test/ui/traits/inheritance/auxiliary/auto_xc.rs b/tests/ui/traits/inheritance/auxiliary/auto_xc.rs
index 9af26cb2e..9af26cb2e 100644
--- a/src/test/ui/traits/inheritance/auxiliary/auto_xc.rs
+++ b/tests/ui/traits/inheritance/auxiliary/auto_xc.rs
diff --git a/src/test/ui/traits/inheritance/auxiliary/auto_xc_2.rs b/tests/ui/traits/inheritance/auxiliary/auto_xc_2.rs
index e9327676d..e9327676d 100644
--- a/src/test/ui/traits/inheritance/auxiliary/auto_xc_2.rs
+++ b/tests/ui/traits/inheritance/auxiliary/auto_xc_2.rs
diff --git a/src/test/ui/traits/inheritance/auxiliary/overloading_xc.rs b/tests/ui/traits/inheritance/auxiliary/overloading_xc.rs
index a25704412..a25704412 100644
--- a/src/test/ui/traits/inheritance/auxiliary/overloading_xc.rs
+++ b/tests/ui/traits/inheritance/auxiliary/overloading_xc.rs
diff --git a/src/test/ui/traits/inheritance/auxiliary/xc_call.rs b/tests/ui/traits/inheritance/auxiliary/xc_call.rs
index b76c52e62..b76c52e62 100644
--- a/src/test/ui/traits/inheritance/auxiliary/xc_call.rs
+++ b/tests/ui/traits/inheritance/auxiliary/xc_call.rs
diff --git a/src/test/ui/traits/inheritance/basic.rs b/tests/ui/traits/inheritance/basic.rs
index 5bfa60b1a..5bfa60b1a 100644
--- a/src/test/ui/traits/inheritance/basic.rs
+++ b/tests/ui/traits/inheritance/basic.rs
diff --git a/src/test/ui/traits/inheritance/call-bound-inherited.rs b/tests/ui/traits/inheritance/call-bound-inherited.rs
index 37c2ff63c..37c2ff63c 100644
--- a/src/test/ui/traits/inheritance/call-bound-inherited.rs
+++ b/tests/ui/traits/inheritance/call-bound-inherited.rs
diff --git a/src/test/ui/traits/inheritance/call-bound-inherited2.rs b/tests/ui/traits/inheritance/call-bound-inherited2.rs
index 8576d29f2..8576d29f2 100644
--- a/src/test/ui/traits/inheritance/call-bound-inherited2.rs
+++ b/tests/ui/traits/inheritance/call-bound-inherited2.rs
diff --git a/src/test/ui/traits/inheritance/cast-without-call-to-supertrait.rs b/tests/ui/traits/inheritance/cast-without-call-to-supertrait.rs
index 25159c1ad..25159c1ad 100644
--- a/src/test/ui/traits/inheritance/cast-without-call-to-supertrait.rs
+++ b/tests/ui/traits/inheritance/cast-without-call-to-supertrait.rs
diff --git a/src/test/ui/traits/inheritance/cast.rs b/tests/ui/traits/inheritance/cast.rs
index 9070b9d1f..9070b9d1f 100644
--- a/src/test/ui/traits/inheritance/cast.rs
+++ b/tests/ui/traits/inheritance/cast.rs
diff --git a/src/test/ui/traits/inheritance/cross-trait-call-xc.rs b/tests/ui/traits/inheritance/cross-trait-call-xc.rs
index 99fbb5c61..99fbb5c61 100644
--- a/src/test/ui/traits/inheritance/cross-trait-call-xc.rs
+++ b/tests/ui/traits/inheritance/cross-trait-call-xc.rs
diff --git a/src/test/ui/traits/inheritance/cross-trait-call.rs b/tests/ui/traits/inheritance/cross-trait-call.rs
index 512c928ca..512c928ca 100644
--- a/src/test/ui/traits/inheritance/cross-trait-call.rs
+++ b/tests/ui/traits/inheritance/cross-trait-call.rs
diff --git a/src/test/ui/traits/inheritance/diamond.rs b/tests/ui/traits/inheritance/diamond.rs
index 32ad0fb4d..32ad0fb4d 100644
--- a/src/test/ui/traits/inheritance/diamond.rs
+++ b/tests/ui/traits/inheritance/diamond.rs
diff --git a/src/test/ui/traits/inheritance/multiple-inheritors.rs b/tests/ui/traits/inheritance/multiple-inheritors.rs
index 77ecbd8eb..77ecbd8eb 100644
--- a/src/test/ui/traits/inheritance/multiple-inheritors.rs
+++ b/tests/ui/traits/inheritance/multiple-inheritors.rs
diff --git a/src/test/ui/traits/inheritance/multiple-params.rs b/tests/ui/traits/inheritance/multiple-params.rs
index 8ff5ba541..8ff5ba541 100644
--- a/src/test/ui/traits/inheritance/multiple-params.rs
+++ b/tests/ui/traits/inheritance/multiple-params.rs
diff --git a/src/test/ui/traits/inheritance/num.rs b/tests/ui/traits/inheritance/num.rs
index 3d63d78ca..3d63d78ca 100644
--- a/src/test/ui/traits/inheritance/num.rs
+++ b/tests/ui/traits/inheritance/num.rs
diff --git a/src/test/ui/traits/inheritance/num0.rs b/tests/ui/traits/inheritance/num0.rs
index cee52542d..cee52542d 100644
--- a/src/test/ui/traits/inheritance/num0.rs
+++ b/tests/ui/traits/inheritance/num0.rs
diff --git a/src/test/ui/traits/inheritance/num1.rs b/tests/ui/traits/inheritance/num1.rs
index 663dd3a5e..663dd3a5e 100644
--- a/src/test/ui/traits/inheritance/num1.rs
+++ b/tests/ui/traits/inheritance/num1.rs
diff --git a/src/test/ui/traits/inheritance/num2.rs b/tests/ui/traits/inheritance/num2.rs
index b713c66a3..b713c66a3 100644
--- a/src/test/ui/traits/inheritance/num2.rs
+++ b/tests/ui/traits/inheritance/num2.rs
diff --git a/src/test/ui/traits/inheritance/num3.rs b/tests/ui/traits/inheritance/num3.rs
index c40be6f83..c40be6f83 100644
--- a/src/test/ui/traits/inheritance/num3.rs
+++ b/tests/ui/traits/inheritance/num3.rs
diff --git a/src/test/ui/traits/inheritance/num5.rs b/tests/ui/traits/inheritance/num5.rs
index f478618f7..f478618f7 100644
--- a/src/test/ui/traits/inheritance/num5.rs
+++ b/tests/ui/traits/inheritance/num5.rs
diff --git a/src/test/ui/traits/inheritance/overloading-simple.rs b/tests/ui/traits/inheritance/overloading-simple.rs
index c306aa2cd..c306aa2cd 100644
--- a/src/test/ui/traits/inheritance/overloading-simple.rs
+++ b/tests/ui/traits/inheritance/overloading-simple.rs
diff --git a/src/test/ui/traits/inheritance/overloading-xc-exe.rs b/tests/ui/traits/inheritance/overloading-xc-exe.rs
index 08778061b..08778061b 100644
--- a/src/test/ui/traits/inheritance/overloading-xc-exe.rs
+++ b/tests/ui/traits/inheritance/overloading-xc-exe.rs
diff --git a/src/test/ui/traits/inheritance/overloading.rs b/tests/ui/traits/inheritance/overloading.rs
index 083643e82..083643e82 100644
--- a/src/test/ui/traits/inheritance/overloading.rs
+++ b/tests/ui/traits/inheritance/overloading.rs
diff --git a/src/test/ui/traits/inheritance/repeated-supertrait-ambig.rs b/tests/ui/traits/inheritance/repeated-supertrait-ambig.rs
index 727897d20..727897d20 100644
--- a/src/test/ui/traits/inheritance/repeated-supertrait-ambig.rs
+++ b/tests/ui/traits/inheritance/repeated-supertrait-ambig.rs
diff --git a/src/test/ui/traits/inheritance/repeated-supertrait-ambig.stderr b/tests/ui/traits/inheritance/repeated-supertrait-ambig.stderr
index 656e0d0bf..656e0d0bf 100644
--- a/src/test/ui/traits/inheritance/repeated-supertrait-ambig.stderr
+++ b/tests/ui/traits/inheritance/repeated-supertrait-ambig.stderr
diff --git a/src/test/ui/traits/inheritance/repeated-supertrait.rs b/tests/ui/traits/inheritance/repeated-supertrait.rs
index cb2581ffa..cb2581ffa 100644
--- a/src/test/ui/traits/inheritance/repeated-supertrait.rs
+++ b/tests/ui/traits/inheritance/repeated-supertrait.rs
diff --git a/src/test/ui/traits/inheritance/self-in-supertype.rs b/tests/ui/traits/inheritance/self-in-supertype.rs
index e8a2bd791..e8a2bd791 100644
--- a/src/test/ui/traits/inheritance/self-in-supertype.rs
+++ b/tests/ui/traits/inheritance/self-in-supertype.rs
diff --git a/src/test/ui/traits/inheritance/self.rs b/tests/ui/traits/inheritance/self.rs
index 5f2559f48..5f2559f48 100644
--- a/src/test/ui/traits/inheritance/self.rs
+++ b/tests/ui/traits/inheritance/self.rs
diff --git a/src/test/ui/traits/inheritance/simple.rs b/tests/ui/traits/inheritance/simple.rs
index ca3a284e5..ca3a284e5 100644
--- a/src/test/ui/traits/inheritance/simple.rs
+++ b/tests/ui/traits/inheritance/simple.rs
diff --git a/src/test/ui/traits/inheritance/static.rs b/tests/ui/traits/inheritance/static.rs
index 16218fbd2..16218fbd2 100644
--- a/src/test/ui/traits/inheritance/static.rs
+++ b/tests/ui/traits/inheritance/static.rs
diff --git a/src/test/ui/traits/inheritance/static2.rs b/tests/ui/traits/inheritance/static2.rs
index bc78e1e23..bc78e1e23 100644
--- a/src/test/ui/traits/inheritance/static2.rs
+++ b/tests/ui/traits/inheritance/static2.rs
diff --git a/src/test/ui/traits/inheritance/subst.rs b/tests/ui/traits/inheritance/subst.rs
index b2b650366..b2b650366 100644
--- a/src/test/ui/traits/inheritance/subst.rs
+++ b/tests/ui/traits/inheritance/subst.rs
diff --git a/src/test/ui/traits/inheritance/subst2.rs b/tests/ui/traits/inheritance/subst2.rs
index ccc9628c7..ccc9628c7 100644
--- a/src/test/ui/traits/inheritance/subst2.rs
+++ b/tests/ui/traits/inheritance/subst2.rs
diff --git a/src/test/ui/traits/inheritance/visibility.rs b/tests/ui/traits/inheritance/visibility.rs
index 6ad864926..6ad864926 100644
--- a/src/test/ui/traits/inheritance/visibility.rs
+++ b/tests/ui/traits/inheritance/visibility.rs
diff --git a/src/test/ui/traits/invalid_operator_trait.rs b/tests/ui/traits/invalid_operator_trait.rs
index 7ea3b0d5b..7ea3b0d5b 100644
--- a/src/test/ui/traits/invalid_operator_trait.rs
+++ b/tests/ui/traits/invalid_operator_trait.rs
diff --git a/src/test/ui/traits/invalid_operator_trait.stderr b/tests/ui/traits/invalid_operator_trait.stderr
index 8c6e36959..8c6e36959 100644
--- a/src/test/ui/traits/invalid_operator_trait.stderr
+++ b/tests/ui/traits/invalid_operator_trait.stderr
diff --git a/src/test/ui/traits/issue-102989.rs b/tests/ui/traits/issue-102989.rs
index 216cd78e5..216cd78e5 100644
--- a/src/test/ui/traits/issue-102989.rs
+++ b/tests/ui/traits/issue-102989.rs
diff --git a/src/test/ui/traits/issue-102989.stderr b/tests/ui/traits/issue-102989.stderr
index 7d0098fe8..7d0098fe8 100644
--- a/src/test/ui/traits/issue-102989.stderr
+++ b/tests/ui/traits/issue-102989.stderr
diff --git a/src/test/ui/traits/issue-104322.rs b/tests/ui/traits/issue-104322.rs
index dcc27f1f0..dcc27f1f0 100644
--- a/src/test/ui/traits/issue-104322.rs
+++ b/tests/ui/traits/issue-104322.rs
diff --git a/tests/ui/traits/issue-106072.rs b/tests/ui/traits/issue-106072.rs
new file mode 100644
index 000000000..7064a39d2
--- /dev/null
+++ b/tests/ui/traits/issue-106072.rs
@@ -0,0 +1,5 @@
+#[derive(Clone)] //~ trait objects must include the `dyn` keyword
+ //~| trait objects must include the `dyn` keyword
+struct Foo;
+trait Foo {} //~ the name `Foo` is defined multiple times
+fn main() {}
diff --git a/tests/ui/traits/issue-106072.stderr b/tests/ui/traits/issue-106072.stderr
new file mode 100644
index 000000000..f9b7b8146
--- /dev/null
+++ b/tests/ui/traits/issue-106072.stderr
@@ -0,0 +1,30 @@
+error[E0428]: the name `Foo` is defined multiple times
+ --> $DIR/issue-106072.rs:4:1
+ |
+LL | struct Foo;
+ | ----------- previous definition of the type `Foo` here
+LL | trait Foo {}
+ | ^^^^^^^^^ `Foo` redefined here
+ |
+ = note: `Foo` must be defined only once in the type namespace of this module
+
+error[E0782]: trait objects must include the `dyn` keyword
+ --> $DIR/issue-106072.rs:1:10
+ |
+LL | #[derive(Clone)]
+ | ^^^^^
+ |
+ = note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0782]: trait objects must include the `dyn` keyword
+ --> $DIR/issue-106072.rs:1:10
+ |
+LL | #[derive(Clone)]
+ | ^^^^^
+ |
+ = note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0428, E0782.
+For more information about an error, try `rustc --explain E0428`.
diff --git a/src/test/ui/traits/issue-18400.rs b/tests/ui/traits/issue-18400.rs
index fdd11512d..fdd11512d 100644
--- a/src/test/ui/traits/issue-18400.rs
+++ b/tests/ui/traits/issue-18400.rs
diff --git a/src/test/ui/traits/issue-18400.stderr b/tests/ui/traits/issue-18400.stderr
index 4394e6f7e..edaf08f49 100644
--- a/src/test/ui/traits/issue-18400.stderr
+++ b/tests/ui/traits/issue-18400.stderr
@@ -9,7 +9,9 @@ note: required for `{integer}` to implement `Set<&[_]>`
--> $DIR/issue-18400.rs:6:16
|
LL | impl<'a, T, S> Set<&'a [T]> for S where
- | ^^^^^^^^^^^^ ^
+ | - ^^^^^^^^^^^^ ^
+ | |
+ | unsatisfied trait bound introduced here
= note: 128 redundant requirements hidden
= note: required for `{integer}` to implement `Set<&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[&[_]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]>`
diff --git a/src/test/ui/traits/issue-18412.rs b/tests/ui/traits/issue-18412.rs
index fe1cfb3df..fe1cfb3df 100644
--- a/src/test/ui/traits/issue-18412.rs
+++ b/tests/ui/traits/issue-18412.rs
diff --git a/src/test/ui/traits/issue-20692.rs b/tests/ui/traits/issue-20692.rs
index 1cb2d8c73..1cb2d8c73 100644
--- a/src/test/ui/traits/issue-20692.rs
+++ b/tests/ui/traits/issue-20692.rs
diff --git a/src/test/ui/traits/issue-20692.stderr b/tests/ui/traits/issue-20692.stderr
index 2028994cd..2028994cd 100644
--- a/src/test/ui/traits/issue-20692.stderr
+++ b/tests/ui/traits/issue-20692.stderr
diff --git a/src/test/ui/traits/issue-22019.rs b/tests/ui/traits/issue-22019.rs
index 1a887f0f3..1a887f0f3 100644
--- a/src/test/ui/traits/issue-22019.rs
+++ b/tests/ui/traits/issue-22019.rs
diff --git a/src/test/ui/traits/issue-22110.rs b/tests/ui/traits/issue-22110.rs
index bdbfee799..bdbfee799 100644
--- a/src/test/ui/traits/issue-22110.rs
+++ b/tests/ui/traits/issue-22110.rs
diff --git a/src/test/ui/traits/issue-22655.rs b/tests/ui/traits/issue-22655.rs
index bc08ca0a2..bc08ca0a2 100644
--- a/src/test/ui/traits/issue-22655.rs
+++ b/tests/ui/traits/issue-22655.rs
diff --git a/src/test/ui/traits/issue-23003-overflow.rs b/tests/ui/traits/issue-23003-overflow.rs
index c5f471f23..c5f471f23 100644
--- a/src/test/ui/traits/issue-23003-overflow.rs
+++ b/tests/ui/traits/issue-23003-overflow.rs
diff --git a/src/test/ui/traits/issue-23003.rs b/tests/ui/traits/issue-23003.rs
index 24c2b2ad6..24c2b2ad6 100644
--- a/src/test/ui/traits/issue-23003.rs
+++ b/tests/ui/traits/issue-23003.rs
diff --git a/src/test/ui/traits/issue-23825.rs b/tests/ui/traits/issue-23825.rs
index a9f0095d2..a9f0095d2 100644
--- a/src/test/ui/traits/issue-23825.rs
+++ b/tests/ui/traits/issue-23825.rs
diff --git a/src/test/ui/traits/issue-24010.rs b/tests/ui/traits/issue-24010.rs
index f18185334..f18185334 100644
--- a/src/test/ui/traits/issue-24010.rs
+++ b/tests/ui/traits/issue-24010.rs
diff --git a/src/test/ui/traits/issue-26339.rs b/tests/ui/traits/issue-26339.rs
index bedd87cc4..bedd87cc4 100644
--- a/src/test/ui/traits/issue-26339.rs
+++ b/tests/ui/traits/issue-26339.rs
diff --git a/src/test/ui/traits/issue-28576.rs b/tests/ui/traits/issue-28576.rs
index 972c839b6..972c839b6 100644
--- a/src/test/ui/traits/issue-28576.rs
+++ b/tests/ui/traits/issue-28576.rs
diff --git a/src/test/ui/traits/issue-28576.stderr b/tests/ui/traits/issue-28576.stderr
index 203cd0630..203cd0630 100644
--- a/src/test/ui/traits/issue-28576.stderr
+++ b/tests/ui/traits/issue-28576.stderr
diff --git a/src/test/ui/traits/issue-32963.rs b/tests/ui/traits/issue-32963.rs
index 56a68f3a2..56a68f3a2 100644
--- a/src/test/ui/traits/issue-32963.rs
+++ b/tests/ui/traits/issue-32963.rs
diff --git a/src/test/ui/traits/issue-32963.stderr b/tests/ui/traits/issue-32963.stderr
index bad45e54d..bad45e54d 100644
--- a/src/test/ui/traits/issue-32963.stderr
+++ b/tests/ui/traits/issue-32963.stderr
diff --git a/src/test/ui/traits/issue-33140-hack-boundaries.rs b/tests/ui/traits/issue-33140-hack-boundaries.rs
index d091162fc..d091162fc 100644
--- a/src/test/ui/traits/issue-33140-hack-boundaries.rs
+++ b/tests/ui/traits/issue-33140-hack-boundaries.rs
diff --git a/src/test/ui/traits/issue-33140-hack-boundaries.stderr b/tests/ui/traits/issue-33140-hack-boundaries.stderr
index 80a502c63..80a502c63 100644
--- a/src/test/ui/traits/issue-33140-hack-boundaries.stderr
+++ b/tests/ui/traits/issue-33140-hack-boundaries.stderr
diff --git a/src/test/ui/traits/issue-33140.rs b/tests/ui/traits/issue-33140.rs
index 9bdac4b83..9bdac4b83 100644
--- a/src/test/ui/traits/issue-33140.rs
+++ b/tests/ui/traits/issue-33140.rs
diff --git a/src/test/ui/traits/issue-33140.stderr b/tests/ui/traits/issue-33140.stderr
index d31281f72..d31281f72 100644
--- a/src/test/ui/traits/issue-33140.stderr
+++ b/tests/ui/traits/issue-33140.stderr
diff --git a/src/test/ui/traits/issue-35869.rs b/tests/ui/traits/issue-35869.rs
index b9b4c972e..b9b4c972e 100644
--- a/src/test/ui/traits/issue-35869.rs
+++ b/tests/ui/traits/issue-35869.rs
diff --git a/src/test/ui/traits/issue-35869.stderr b/tests/ui/traits/issue-35869.stderr
index 0780109b8..6d985bdea 100644
--- a/src/test/ui/traits/issue-35869.stderr
+++ b/tests/ui/traits/issue-35869.stderr
@@ -12,8 +12,8 @@ note: type in trait
|
LL | fn foo(_: fn(u8) -> ());
| ^^^^^^^^^^^^
- = note: expected fn pointer `fn(fn(u8))`
- found fn pointer `fn(fn(u16))`
+ = note: expected signature `fn(fn(u8))`
+ found signature `fn(fn(u16))`
error[E0053]: method `bar` has an incompatible type for trait
--> $DIR/issue-35869.rs:13:15
@@ -29,8 +29,8 @@ note: type in trait
|
LL | fn bar(_: Option<u8>);
| ^^^^^^^^^^
- = note: expected fn pointer `fn(Option<u8>)`
- found fn pointer `fn(Option<u16>)`
+ = note: expected signature `fn(Option<u8>)`
+ found signature `fn(Option<u16>)`
error[E0053]: method `baz` has an incompatible type for trait
--> $DIR/issue-35869.rs:15:15
@@ -46,8 +46,8 @@ note: type in trait
|
LL | fn baz(_: (u8, u16));
| ^^^^^^^^^
- = note: expected fn pointer `fn((u8, _))`
- found fn pointer `fn((u16, _))`
+ = note: expected signature `fn((u8, _))`
+ found signature `fn((u16, _))`
error[E0053]: method `qux` has an incompatible type for trait
--> $DIR/issue-35869.rs:17:17
@@ -63,8 +63,8 @@ note: type in trait
|
LL | fn qux() -> u8;
| ^^
- = note: expected fn pointer `fn() -> u8`
- found fn pointer `fn() -> u16`
+ = note: expected signature `fn() -> u8`
+ found signature `fn() -> u16`
error: aborting due to 4 previous errors
diff --git a/src/test/ui/traits/issue-3683.rs b/tests/ui/traits/issue-3683.rs
index b12c450c9..b12c450c9 100644
--- a/src/test/ui/traits/issue-3683.rs
+++ b/tests/ui/traits/issue-3683.rs
diff --git a/src/test/ui/traits/issue-38033.rs b/tests/ui/traits/issue-38033.rs
index 16b867ec8..16b867ec8 100644
--- a/src/test/ui/traits/issue-38033.rs
+++ b/tests/ui/traits/issue-38033.rs
diff --git a/src/test/ui/issues/issue-38404.rs b/tests/ui/traits/issue-38404.rs
index 1a92acc34..1a92acc34 100644
--- a/src/test/ui/issues/issue-38404.rs
+++ b/tests/ui/traits/issue-38404.rs
diff --git a/src/test/ui/issues/issue-38404.stderr b/tests/ui/traits/issue-38404.stderr
index d7721d7e6..d7721d7e6 100644
--- a/src/test/ui/issues/issue-38404.stderr
+++ b/tests/ui/traits/issue-38404.stderr
diff --git a/src/test/ui/traits/issue-38604.rs b/tests/ui/traits/issue-38604.rs
index 002a3c43f..002a3c43f 100644
--- a/src/test/ui/traits/issue-38604.rs
+++ b/tests/ui/traits/issue-38604.rs
diff --git a/src/test/ui/traits/issue-38604.stderr b/tests/ui/traits/issue-38604.stderr
index 50d6fb054..50d6fb054 100644
--- a/src/test/ui/traits/issue-38604.stderr
+++ b/tests/ui/traits/issue-38604.stderr
diff --git a/src/test/ui/traits/issue-3973.rs b/tests/ui/traits/issue-3973.rs
index a5ed5b870..a5ed5b870 100644
--- a/src/test/ui/traits/issue-3973.rs
+++ b/tests/ui/traits/issue-3973.rs
diff --git a/src/test/ui/traits/issue-3973.stderr b/tests/ui/traits/issue-3973.stderr
index 87ee08049..87ee08049 100644
--- a/src/test/ui/traits/issue-3973.stderr
+++ b/tests/ui/traits/issue-3973.stderr
diff --git a/src/test/ui/traits/issue-4107.rs b/tests/ui/traits/issue-4107.rs
index 98433e806..98433e806 100644
--- a/src/test/ui/traits/issue-4107.rs
+++ b/tests/ui/traits/issue-4107.rs
diff --git a/src/test/ui/traits/issue-43132.rs b/tests/ui/traits/issue-43132.rs
index c886f4b0a..c886f4b0a 100644
--- a/src/test/ui/traits/issue-43132.rs
+++ b/tests/ui/traits/issue-43132.rs
diff --git a/src/test/ui/traits/issue-43784-supertrait.rs b/tests/ui/traits/issue-43784-supertrait.rs
index 55c26ccd2..55c26ccd2 100644
--- a/src/test/ui/traits/issue-43784-supertrait.rs
+++ b/tests/ui/traits/issue-43784-supertrait.rs
diff --git a/tests/ui/traits/issue-43784-supertrait.stderr b/tests/ui/traits/issue-43784-supertrait.stderr
new file mode 100644
index 000000000..6b5b72138
--- /dev/null
+++ b/tests/ui/traits/issue-43784-supertrait.stderr
@@ -0,0 +1,24 @@
+error[E0277]: the trait bound `T: Copy` is not satisfied
+ --> $DIR/issue-43784-supertrait.rs:8:22
+ |
+LL | impl<T> Complete for T {}
+ | ^ the trait `Copy` is not implemented for `T`
+ |
+note: required for `T` to implement `Partial`
+ --> $DIR/issue-43784-supertrait.rs:1:11
+ |
+LL | pub trait Partial: Copy {
+ | ^^^^^^^
+note: required by a bound in `Complete`
+ --> $DIR/issue-43784-supertrait.rs:4:21
+ |
+LL | pub trait Complete: Partial {
+ | ^^^^^^^ required by this bound in `Complete`
+help: consider restricting type parameter `T`
+ |
+LL | impl<T: std::marker::Copy> Complete for T {}
+ | +++++++++++++++++++
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/issues/issue-50480.rs b/tests/ui/traits/issue-50480.rs
index 10597caf5..005939e0c 100644
--- a/src/test/ui/issues/issue-50480.rs
+++ b/tests/ui/traits/issue-50480.rs
@@ -5,13 +5,11 @@ struct Foo(N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
//~| ERROR cannot find type `NotDefined` in this scope
//~| ERROR cannot find type `N` in this scope
//~| ERROR cannot find type `N` in this scope
-//~| ERROR `i32` is not an iterator
#[derive(Clone, Copy)]
//~^ ERROR the trait `Copy` may not be implemented for this type
struct Bar<T>(T, N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
//~^ ERROR cannot find type `NotDefined` in this scope
//~| ERROR cannot find type `N` in this scope
-//~| ERROR `i32` is not an iterator
fn main() {}
diff --git a/tests/ui/traits/issue-50480.stderr b/tests/ui/traits/issue-50480.stderr
new file mode 100644
index 000000000..5063fdca0
--- /dev/null
+++ b/tests/ui/traits/issue-50480.stderr
@@ -0,0 +1,92 @@
+error[E0412]: cannot find type `N` in this scope
+ --> $DIR/issue-50480.rs:3:12
+ |
+LL | struct Foo(N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | ^ not found in this scope
+ |
+help: you might be missing a type parameter
+ |
+LL | struct Foo<N>(N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | +++
+
+error[E0412]: cannot find type `NotDefined` in this scope
+ --> $DIR/issue-50480.rs:3:15
+ |
+LL | struct Foo(N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | ^^^^^^^^^^ not found in this scope
+
+error[E0412]: cannot find type `N` in this scope
+ --> $DIR/issue-50480.rs:3:12
+ |
+LL | struct Foo(N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | ^ not found in this scope
+ |
+help: you might be missing a type parameter
+ |
+LL | struct Foo<N>(N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | +++
+
+error[E0412]: cannot find type `NotDefined` in this scope
+ --> $DIR/issue-50480.rs:3:15
+ |
+LL | struct Foo(N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | ^^^^^^^^^^ not found in this scope
+ |
+help: you might be missing a type parameter
+ |
+LL | struct Foo<NotDefined>(N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | ++++++++++++
+
+error[E0412]: cannot find type `N` in this scope
+ --> $DIR/issue-50480.rs:11:18
+ |
+LL | struct Bar<T>(T, N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | - ^
+ | |
+ | similarly named type parameter `T` defined here
+ |
+help: a type parameter with a similar name exists
+ |
+LL | struct Bar<T>(T, T, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | ~
+help: you might be missing a type parameter
+ |
+LL | struct Bar<T, N>(T, N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | +++
+
+error[E0412]: cannot find type `NotDefined` in this scope
+ --> $DIR/issue-50480.rs:11:21
+ |
+LL | struct Bar<T>(T, N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | ^^^^^^^^^^ not found in this scope
+
+error[E0204]: the trait `Copy` may not be implemented for this type
+ --> $DIR/issue-50480.rs:1:17
+ |
+LL | #[derive(Clone, Copy)]
+ | ^^^^
+LL |
+LL | struct Foo(N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | -------- ------ this field does not implement `Copy`
+ | |
+ | this field does not implement `Copy`
+ |
+ = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0204]: the trait `Copy` may not be implemented for this type
+ --> $DIR/issue-50480.rs:9:17
+ |
+LL | #[derive(Clone, Copy)]
+ | ^^^^
+LL |
+LL | struct Bar<T>(T, N, NotDefined, <i32 as Iterator>::Item, Vec<i32>, String);
+ | -------- ------ this field does not implement `Copy`
+ | |
+ | this field does not implement `Copy`
+ |
+ = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 8 previous errors
+
+Some errors have detailed explanations: E0204, E0412.
+For more information about an error, try `rustc --explain E0204`.
diff --git a/src/test/ui/traits/issue-52893.rs b/tests/ui/traits/issue-52893.rs
index d72598d5d..d72598d5d 100644
--- a/src/test/ui/traits/issue-52893.rs
+++ b/tests/ui/traits/issue-52893.rs
diff --git a/tests/ui/traits/issue-52893.stderr b/tests/ui/traits/issue-52893.stderr
new file mode 100644
index 000000000..a11867c03
--- /dev/null
+++ b/tests/ui/traits/issue-52893.stderr
@@ -0,0 +1,29 @@
+error[E0308]: mismatched types
+ --> $DIR/issue-52893.rs:53:22
+ |
+LL | impl<F, Name, P> AddClass<Name, F> for Class<P>
+ | - this type parameter
+...
+LL | builder.push(output);
+ | ---- ^^^^^^ expected type parameter `F`, found struct `Class`
+ | |
+ | arguments to this method are incorrect
+ |
+ = note: expected type parameter `F`
+ found struct `Class<P>`
+help: the return type of this call is `Class<P>` due to the type of the argument passed
+ --> $DIR/issue-52893.rs:53:9
+ |
+LL | builder.push(output);
+ | ^^^^^^^^^^^^^------^
+ | |
+ | this argument influences the return type of `push`
+note: associated function defined here
+ --> $DIR/issue-52893.rs:11:8
+ |
+LL | fn push(self, other: T) -> Self::PushRes;
+ | ^^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/traits/issue-56202.rs b/tests/ui/traits/issue-56202.rs
index 0952843e6..0952843e6 100644
--- a/src/test/ui/traits/issue-56202.rs
+++ b/tests/ui/traits/issue-56202.rs
diff --git a/src/test/ui/traits/issue-56488.rs b/tests/ui/traits/issue-56488.rs
index e2f399692..e2f399692 100644
--- a/src/test/ui/traits/issue-56488.rs
+++ b/tests/ui/traits/issue-56488.rs
diff --git a/src/test/ui/traits/issue-59029-1.rs b/tests/ui/traits/issue-59029-1.rs
index 8ab47a4af..8ab47a4af 100644
--- a/src/test/ui/traits/issue-59029-1.rs
+++ b/tests/ui/traits/issue-59029-1.rs
diff --git a/src/test/ui/traits/issue-59029-1.stderr b/tests/ui/traits/issue-59029-1.stderr
index 203a89285..203a89285 100644
--- a/src/test/ui/traits/issue-59029-1.stderr
+++ b/tests/ui/traits/issue-59029-1.stderr
diff --git a/src/test/ui/traits/issue-59029-2.rs b/tests/ui/traits/issue-59029-2.rs
index 2bdb128d8..2bdb128d8 100644
--- a/src/test/ui/traits/issue-59029-2.rs
+++ b/tests/ui/traits/issue-59029-2.rs
diff --git a/src/test/ui/traits/issue-6128.rs b/tests/ui/traits/issue-6128.rs
index 07d92f8f8..07d92f8f8 100644
--- a/src/test/ui/traits/issue-6128.rs
+++ b/tests/ui/traits/issue-6128.rs
diff --git a/src/test/ui/traits/issue-6334.rs b/tests/ui/traits/issue-6334.rs
index acf48da15..acf48da15 100644
--- a/src/test/ui/traits/issue-6334.rs
+++ b/tests/ui/traits/issue-6334.rs
diff --git a/src/test/ui/traits/issue-65284-suggest-generic-trait-bound.rs b/tests/ui/traits/issue-65284-suggest-generic-trait-bound.rs
index 018ce0459..018ce0459 100644
--- a/src/test/ui/traits/issue-65284-suggest-generic-trait-bound.rs
+++ b/tests/ui/traits/issue-65284-suggest-generic-trait-bound.rs
diff --git a/src/test/ui/traits/issue-65284-suggest-generic-trait-bound.stderr b/tests/ui/traits/issue-65284-suggest-generic-trait-bound.stderr
index ae33e61d8..ae33e61d8 100644
--- a/src/test/ui/traits/issue-65284-suggest-generic-trait-bound.stderr
+++ b/tests/ui/traits/issue-65284-suggest-generic-trait-bound.stderr
diff --git a/src/test/ui/traits/issue-65673.rs b/tests/ui/traits/issue-65673.rs
index e5c2fccb2..e5c2fccb2 100644
--- a/src/test/ui/traits/issue-65673.rs
+++ b/tests/ui/traits/issue-65673.rs
diff --git a/src/test/ui/traits/issue-65673.stderr b/tests/ui/traits/issue-65673.stderr
index 8f01d7c53..8f01d7c53 100644
--- a/src/test/ui/traits/issue-65673.stderr
+++ b/tests/ui/traits/issue-65673.stderr
diff --git a/src/test/ui/traits/issue-68295.rs b/tests/ui/traits/issue-68295.rs
index 7ff54539a..7ff54539a 100644
--- a/src/test/ui/traits/issue-68295.rs
+++ b/tests/ui/traits/issue-68295.rs
diff --git a/src/test/ui/traits/issue-68295.stderr b/tests/ui/traits/issue-68295.stderr
index cb6e6e076..cb6e6e076 100644
--- a/src/test/ui/traits/issue-68295.stderr
+++ b/tests/ui/traits/issue-68295.stderr
diff --git a/src/test/ui/traits/issue-7013.rs b/tests/ui/traits/issue-7013.rs
index 1fb01303c..1fb01303c 100644
--- a/src/test/ui/traits/issue-7013.rs
+++ b/tests/ui/traits/issue-7013.rs
diff --git a/src/test/ui/traits/issue-7013.stderr b/tests/ui/traits/issue-7013.stderr
index 4575f4dba..4575f4dba 100644
--- a/src/test/ui/traits/issue-7013.stderr
+++ b/tests/ui/traits/issue-7013.stderr
diff --git a/src/test/ui/traits/issue-70944.rs b/tests/ui/traits/issue-70944.rs
index 3286de9d5..3286de9d5 100644
--- a/src/test/ui/traits/issue-70944.rs
+++ b/tests/ui/traits/issue-70944.rs
diff --git a/src/test/ui/traits/issue-71036.rs b/tests/ui/traits/issue-71036.rs
index 69eed0c04..69eed0c04 100644
--- a/src/test/ui/traits/issue-71036.rs
+++ b/tests/ui/traits/issue-71036.rs
diff --git a/src/test/ui/traits/issue-71036.stderr b/tests/ui/traits/issue-71036.stderr
index 79eb7a2ae..79eb7a2ae 100644
--- a/src/test/ui/traits/issue-71036.stderr
+++ b/tests/ui/traits/issue-71036.stderr
diff --git a/src/test/ui/traits/issue-71136.rs b/tests/ui/traits/issue-71136.rs
index b21756e2b..b21756e2b 100644
--- a/src/test/ui/traits/issue-71136.rs
+++ b/tests/ui/traits/issue-71136.rs
diff --git a/src/test/ui/traits/issue-71136.stderr b/tests/ui/traits/issue-71136.stderr
index f54173392..f54173392 100644
--- a/src/test/ui/traits/issue-71136.stderr
+++ b/tests/ui/traits/issue-71136.stderr
diff --git a/src/test/ui/traits/issue-72410.rs b/tests/ui/traits/issue-72410.rs
index c95f1dfdc..c95f1dfdc 100644
--- a/src/test/ui/traits/issue-72410.rs
+++ b/tests/ui/traits/issue-72410.rs
diff --git a/src/test/ui/traits/issue-72410.stderr b/tests/ui/traits/issue-72410.stderr
index c7beb834b..c7beb834b 100644
--- a/src/test/ui/traits/issue-72410.stderr
+++ b/tests/ui/traits/issue-72410.stderr
diff --git a/src/test/ui/traits/issue-72455.rs b/tests/ui/traits/issue-72455.rs
index b6c3bb222..b6c3bb222 100644
--- a/src/test/ui/traits/issue-72455.rs
+++ b/tests/ui/traits/issue-72455.rs
diff --git a/src/test/ui/traits/issue-75627.rs b/tests/ui/traits/issue-75627.rs
index 93a2ec1cc..93a2ec1cc 100644
--- a/src/test/ui/traits/issue-75627.rs
+++ b/tests/ui/traits/issue-75627.rs
diff --git a/tests/ui/traits/issue-75627.stderr b/tests/ui/traits/issue-75627.stderr
new file mode 100644
index 000000000..1675edc9f
--- /dev/null
+++ b/tests/ui/traits/issue-75627.stderr
@@ -0,0 +1,14 @@
+error[E0412]: cannot find type `T` in this scope
+ --> $DIR/issue-75627.rs:3:26
+ |
+LL | unsafe impl Send for Foo<T> {}
+ | ^ not found in this scope
+ |
+help: you might be missing a type parameter
+ |
+LL | unsafe impl<T> Send for Foo<T> {}
+ | +++
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0412`.
diff --git a/src/test/ui/traits/issue-77982.rs b/tests/ui/traits/issue-77982.rs
index f5be6cf21..f5be6cf21 100644
--- a/src/test/ui/traits/issue-77982.rs
+++ b/tests/ui/traits/issue-77982.rs
diff --git a/src/test/ui/traits/issue-77982.stderr b/tests/ui/traits/issue-77982.stderr
index b6a045855..0b57a8212 100644
--- a/src/test/ui/traits/issue-77982.stderr
+++ b/tests/ui/traits/issue-77982.stderr
@@ -12,9 +12,6 @@ LL | opts.get(opt.as_ref());
where T: ?Sized;
note: required by a bound in `HashMap::<K, V, S>::get`
--> $SRC_DIR/std/src/collections/hash/map.rs:LL:COL
- |
-LL | K: Borrow<Q>,
- | ^^^^^^^^^ required by this bound in `HashMap::<K, V, S>::get`
help: consider specifying the generic argument
|
LL | opts.get::<Q>(opt.as_ref());
@@ -46,7 +43,15 @@ LL | let ips: Vec<_> = (0..100_000).map(|_| u32::from(0u32.into())).collect(
| |
| required by a bound introduced by this call
|
- = note: cannot satisfy `u32: From<_>`
+ = note: multiple `impl`s satisfying `u32: From<_>` found in the following crates: `core`, `std`:
+ - impl From<Ipv4Addr> for u32;
+ - impl From<NonZeroU32> for u32;
+ - impl From<bool> for u32;
+ - impl From<char> for u32;
+ - impl From<u16> for u32;
+ - impl From<u8> for u32;
+ - impl<T> From<!> for T;
+ - impl<T> From<T> for T;
help: try using a fully qualified path to specify the expected types
|
LL | let ips: Vec<_> = (0..100_000).map(|_| u32::from(<u32 as Into<T>>::into(0u32))).collect();
diff --git a/src/test/ui/traits/issue-78372.rs b/tests/ui/traits/issue-78372.rs
index 92f9f4b46..92f9f4b46 100644
--- a/src/test/ui/traits/issue-78372.rs
+++ b/tests/ui/traits/issue-78372.rs
diff --git a/src/test/ui/traits/issue-78372.stderr b/tests/ui/traits/issue-78372.stderr
index 7e781016e..8e7fd5f25 100644
--- a/src/test/ui/traits/issue-78372.stderr
+++ b/tests/ui/traits/issue-78372.stderr
@@ -30,9 +30,12 @@ error[E0412]: cannot find type `MISC` in this scope
--> $DIR/issue-78372.rs:3:34
|
LL | impl<T> DispatchFromDyn<Smaht<U, MISC>> for T {}
- | - ^^^^ not found in this scope
- | |
- | help: you might be missing a type parameter: `, MISC`
+ | ^^^^ not found in this scope
+ |
+help: you might be missing a type parameter
+ |
+LL | impl<T, MISC> DispatchFromDyn<Smaht<U, MISC>> for T {}
+ | ++++++
error[E0658]: use of unstable library feature 'dispatch_from_dyn'
--> $DIR/issue-78372.rs:1:5
diff --git a/src/test/ui/traits/issue-78632.rs b/tests/ui/traits/issue-78632.rs
index c72a2aef4..c72a2aef4 100644
--- a/src/test/ui/traits/issue-78632.rs
+++ b/tests/ui/traits/issue-78632.rs
diff --git a/src/test/ui/traits/issue-79458.rs b/tests/ui/traits/issue-79458.rs
index a41add6a1..a41add6a1 100644
--- a/src/test/ui/traits/issue-79458.rs
+++ b/tests/ui/traits/issue-79458.rs
diff --git a/src/test/ui/traits/issue-79458.stderr b/tests/ui/traits/issue-79458.stderr
index 08f7bbbf0..08f7bbbf0 100644
--- a/src/test/ui/traits/issue-79458.stderr
+++ b/tests/ui/traits/issue-79458.stderr
diff --git a/src/test/ui/traits/issue-8153.rs b/tests/ui/traits/issue-8153.rs
index 81a8f5338..81a8f5338 100644
--- a/src/test/ui/traits/issue-8153.rs
+++ b/tests/ui/traits/issue-8153.rs
diff --git a/src/test/ui/traits/issue-8153.stderr b/tests/ui/traits/issue-8153.stderr
index ae214bb9e..ae214bb9e 100644
--- a/src/test/ui/traits/issue-8153.stderr
+++ b/tests/ui/traits/issue-8153.stderr
diff --git a/src/test/ui/traits/issue-82830.rs b/tests/ui/traits/issue-82830.rs
index 37bae2e90..37bae2e90 100644
--- a/src/test/ui/traits/issue-82830.rs
+++ b/tests/ui/traits/issue-82830.rs
diff --git a/src/test/ui/traits/issue-83538-tainted-cache-after-cycle.rs b/tests/ui/traits/issue-83538-tainted-cache-after-cycle.rs
index 3cd68ff6f..3cd68ff6f 100644
--- a/src/test/ui/traits/issue-83538-tainted-cache-after-cycle.rs
+++ b/tests/ui/traits/issue-83538-tainted-cache-after-cycle.rs
diff --git a/src/test/ui/traits/issue-83538-tainted-cache-after-cycle.stderr b/tests/ui/traits/issue-83538-tainted-cache-after-cycle.stderr
index 7c4041144..7c4041144 100644
--- a/src/test/ui/traits/issue-83538-tainted-cache-after-cycle.stderr
+++ b/tests/ui/traits/issue-83538-tainted-cache-after-cycle.stderr
diff --git a/src/test/ui/traits/issue-84399-bad-fresh-caching.rs b/tests/ui/traits/issue-84399-bad-fresh-caching.rs
index 149400156..149400156 100644
--- a/src/test/ui/traits/issue-84399-bad-fresh-caching.rs
+++ b/tests/ui/traits/issue-84399-bad-fresh-caching.rs
diff --git a/src/test/ui/traits/issue-85360-eval-obligation-ice.rs b/tests/ui/traits/issue-85360-eval-obligation-ice.rs
index 19131684a..19131684a 100644
--- a/src/test/ui/traits/issue-85360-eval-obligation-ice.rs
+++ b/tests/ui/traits/issue-85360-eval-obligation-ice.rs
diff --git a/src/test/ui/traits/issue-85360-eval-obligation-ice.stderr b/tests/ui/traits/issue-85360-eval-obligation-ice.stderr
index ebf977dd6..ebf977dd6 100644
--- a/src/test/ui/traits/issue-85360-eval-obligation-ice.stderr
+++ b/tests/ui/traits/issue-85360-eval-obligation-ice.stderr
diff --git a/src/test/ui/traits/issue-85735.rs b/tests/ui/traits/issue-85735.rs
index fb387a9c9..fb387a9c9 100644
--- a/src/test/ui/traits/issue-85735.rs
+++ b/tests/ui/traits/issue-85735.rs
diff --git a/tests/ui/traits/issue-85735.stderr b/tests/ui/traits/issue-85735.stderr
new file mode 100644
index 000000000..9e80497ca
--- /dev/null
+++ b/tests/ui/traits/issue-85735.stderr
@@ -0,0 +1,18 @@
+error[E0283]: type annotations needed: cannot satisfy `T: FnMut<(&'a (),)>`
+ --> $DIR/issue-85735.rs:7:8
+ |
+LL | T: FnMut(&'a ()),
+ | ^^^^^^^^^^^^^
+ |
+note: multiple `impl`s or `where` clauses satisfying `T: FnMut<(&'a (),)>` found
+ --> $DIR/issue-85735.rs:7:8
+ |
+LL | T: FnMut(&'a ()),
+ | ^^^^^^^^^^^^^
+LL |
+LL | T: FnMut(&'b ()),
+ | ^^^^^^^^^^^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0283`.
diff --git a/src/test/ui/traits/issue-87558.rs b/tests/ui/traits/issue-87558.rs
index c5d86bd63..c5d86bd63 100644
--- a/src/test/ui/traits/issue-87558.rs
+++ b/tests/ui/traits/issue-87558.rs
diff --git a/src/test/ui/traits/issue-87558.stderr b/tests/ui/traits/issue-87558.stderr
index 494274d8c..494274d8c 100644
--- a/src/test/ui/traits/issue-87558.stderr
+++ b/tests/ui/traits/issue-87558.stderr
diff --git a/src/test/ui/traits/issue-89119.rs b/tests/ui/traits/issue-89119.rs
index 170f69915..170f69915 100644
--- a/src/test/ui/traits/issue-89119.rs
+++ b/tests/ui/traits/issue-89119.rs
diff --git a/src/test/ui/traits/issue-90195-2.rs b/tests/ui/traits/issue-90195-2.rs
index b739dc46e..b739dc46e 100644
--- a/src/test/ui/traits/issue-90195-2.rs
+++ b/tests/ui/traits/issue-90195-2.rs
diff --git a/src/test/ui/traits/issue-90195.rs b/tests/ui/traits/issue-90195.rs
index 543c9f197..543c9f197 100644
--- a/src/test/ui/traits/issue-90195.rs
+++ b/tests/ui/traits/issue-90195.rs
diff --git a/src/test/ui/traits/issue-90662-projection-caching.rs b/tests/ui/traits/issue-90662-projection-caching.rs
index 879f30071..879f30071 100644
--- a/src/test/ui/traits/issue-90662-projection-caching.rs
+++ b/tests/ui/traits/issue-90662-projection-caching.rs
diff --git a/src/test/ui/traits/issue-91594.rs b/tests/ui/traits/issue-91594.rs
index 930f7f0c6..930f7f0c6 100644
--- a/src/test/ui/traits/issue-91594.rs
+++ b/tests/ui/traits/issue-91594.rs
diff --git a/tests/ui/traits/issue-91594.stderr b/tests/ui/traits/issue-91594.stderr
new file mode 100644
index 000000000..85d903fad
--- /dev/null
+++ b/tests/ui/traits/issue-91594.stderr
@@ -0,0 +1,18 @@
+error[E0277]: the trait bound `Foo: HasComponent<()>` is not satisfied
+ --> $DIR/issue-91594.rs:10:19
+ |
+LL | impl HasComponent<<Foo as Component<Foo>>::Interface> for Foo {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `HasComponent<()>` is not implemented for `Foo`
+ |
+ = help: the trait `HasComponent<<Foo as Component<Foo>>::Interface>` is implemented for `Foo`
+note: required for `Foo` to implement `Component<Foo>`
+ --> $DIR/issue-91594.rs:13:27
+ |
+LL | impl<M: HasComponent<()>> Component<M> for Foo {
+ | ---------------- ^^^^^^^^^^^^ ^^^
+ | |
+ | unsatisfied trait bound introduced here
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/traits/issue-91949-hangs-on-recursion.rs b/tests/ui/traits/issue-91949-hangs-on-recursion.rs
index 6474b2b38..6474b2b38 100644
--- a/src/test/ui/traits/issue-91949-hangs-on-recursion.rs
+++ b/tests/ui/traits/issue-91949-hangs-on-recursion.rs
diff --git a/src/test/ui/traits/issue-91949-hangs-on-recursion.stderr b/tests/ui/traits/issue-91949-hangs-on-recursion.stderr
index 1f18c5daf..1f18c5daf 100644
--- a/src/test/ui/traits/issue-91949-hangs-on-recursion.stderr
+++ b/tests/ui/traits/issue-91949-hangs-on-recursion.stderr
diff --git a/src/test/ui/traits/issue-92292.rs b/tests/ui/traits/issue-92292.rs
index bb3700a2b..bb3700a2b 100644
--- a/src/test/ui/traits/issue-92292.rs
+++ b/tests/ui/traits/issue-92292.rs
diff --git a/src/test/ui/traits/issue-9394-inherited-calls.rs b/tests/ui/traits/issue-9394-inherited-calls.rs
index cc0dd4fc1..cc0dd4fc1 100644
--- a/src/test/ui/traits/issue-9394-inherited-calls.rs
+++ b/tests/ui/traits/issue-9394-inherited-calls.rs
diff --git a/src/test/ui/traits/issue-95311.rs b/tests/ui/traits/issue-95311.rs
index 9d40d254a..9d40d254a 100644
--- a/src/test/ui/traits/issue-95311.rs
+++ b/tests/ui/traits/issue-95311.rs
diff --git a/src/test/ui/traits/issue-95898.rs b/tests/ui/traits/issue-95898.rs
index 41a20b899..41a20b899 100644
--- a/src/test/ui/traits/issue-95898.rs
+++ b/tests/ui/traits/issue-95898.rs
diff --git a/src/test/ui/traits/issue-95898.stderr b/tests/ui/traits/issue-95898.stderr
index ca7bacdbf..ca7bacdbf 100644
--- a/src/test/ui/traits/issue-95898.stderr
+++ b/tests/ui/traits/issue-95898.stderr
diff --git a/src/test/ui/traits/issue-96664.rs b/tests/ui/traits/issue-96664.rs
index 3c5314af7..3c5314af7 100644
--- a/src/test/ui/traits/issue-96664.rs
+++ b/tests/ui/traits/issue-96664.rs
diff --git a/src/test/ui/traits/issue-96665.rs b/tests/ui/traits/issue-96665.rs
index a571d48d9..a571d48d9 100644
--- a/src/test/ui/traits/issue-96665.rs
+++ b/tests/ui/traits/issue-96665.rs
diff --git a/src/test/ui/traits/issue-97576.rs b/tests/ui/traits/issue-97576.rs
index fdc85e9fa..fdc85e9fa 100644
--- a/src/test/ui/traits/issue-97576.rs
+++ b/tests/ui/traits/issue-97576.rs
diff --git a/tests/ui/traits/issue-97576.stderr b/tests/ui/traits/issue-97576.stderr
new file mode 100644
index 000000000..9062a0fab
--- /dev/null
+++ b/tests/ui/traits/issue-97576.stderr
@@ -0,0 +1,11 @@
+error[E0277]: the trait bound `String: From<impl ToString>` is not satisfied
+ --> $DIR/issue-97576.rs:8:22
+ |
+LL | bar: bar.into(),
+ | ^^^^ the trait `From<impl ToString>` is not implemented for `String`
+ |
+ = note: required for `impl ToString` to implement `Into<String>`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/traits/issue-97695-double-trivial-bound.rs b/tests/ui/traits/issue-97695-double-trivial-bound.rs
index 213605b51..213605b51 100644
--- a/src/test/ui/traits/issue-97695-double-trivial-bound.rs
+++ b/tests/ui/traits/issue-97695-double-trivial-bound.rs
diff --git a/src/test/ui/issues/issue-99875.rs b/tests/ui/traits/issue-99875.rs
index cf73fd8d3..cf73fd8d3 100644
--- a/src/test/ui/issues/issue-99875.rs
+++ b/tests/ui/traits/issue-99875.rs
diff --git a/src/test/ui/issues/issue-99875.stderr b/tests/ui/traits/issue-99875.stderr
index 3ff8f12f1..fb6eebbd2 100644
--- a/src/test/ui/issues/issue-99875.stderr
+++ b/tests/ui/traits/issue-99875.stderr
@@ -6,12 +6,15 @@ LL | takes(function);
| |
| required by a bound introduced by this call
|
- = help: the trait `Trait` is implemented for fn pointer `fn(Argument) -> Return`
note: required by a bound in `takes`
--> $DIR/issue-99875.rs:9:18
|
LL | fn takes(_: impl Trait) {}
| ^^^^^ required by this bound in `takes`
+help: the trait `Trait` is implemented for fn pointer `fn(Argument) -> Return`, try casting using `as`
+ |
+LL | takes(function as fn(Argument) -> Return);
+ | +++++++++++++++++++++++++
error[E0277]: the trait bound `[closure@$DIR/issue-99875.rs:14:11: 14:34]: Trait` is not satisfied
--> $DIR/issue-99875.rs:14:11
diff --git a/src/test/ui/traits/item-inside-macro.rs b/tests/ui/traits/item-inside-macro.rs
index 54bf872d0..54bf872d0 100644
--- a/src/test/ui/traits/item-inside-macro.rs
+++ b/tests/ui/traits/item-inside-macro.rs
diff --git a/src/test/ui/traits/item-privacy.rs b/tests/ui/traits/item-privacy.rs
index 38d06b967..38d06b967 100644
--- a/src/test/ui/traits/item-privacy.rs
+++ b/tests/ui/traits/item-privacy.rs
diff --git a/src/test/ui/traits/item-privacy.stderr b/tests/ui/traits/item-privacy.stderr
index f137a298a..293cfbda8 100644
--- a/src/test/ui/traits/item-privacy.stderr
+++ b/tests/ui/traits/item-privacy.stderr
@@ -148,19 +148,24 @@ error[E0223]: ambiguous associated type
--> $DIR/item-privacy.rs:115:12
|
LL | let _: S::A;
- | ^^^^ help: use fully-qualified syntax: `<S as Trait>::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 Trait>::B`
+ | ^^^^ help: use the fully-qualified path: `<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 Trait>::C`
+ | ^^^^ help: use the fully-qualified path: `<S as assoc_ty::C>::C`
error[E0624]: associated type `A` is private
--> $DIR/item-privacy.rs:119:12
diff --git a/src/test/ui/traits/kindck-owned-contains-1.rs b/tests/ui/traits/kindck-owned-contains-1.rs
index 8adb06ba3..8adb06ba3 100644
--- a/src/test/ui/traits/kindck-owned-contains-1.rs
+++ b/tests/ui/traits/kindck-owned-contains-1.rs
diff --git a/src/test/ui/traits/map-types.rs b/tests/ui/traits/map-types.rs
index dc33b9618..dc33b9618 100644
--- a/src/test/ui/traits/map-types.rs
+++ b/tests/ui/traits/map-types.rs
diff --git a/src/test/ui/traits/map-types.stderr b/tests/ui/traits/map-types.stderr
index f685c50b0..f685c50b0 100644
--- a/src/test/ui/traits/map-types.stderr
+++ b/tests/ui/traits/map-types.stderr
diff --git a/src/test/ui/traits/matching-lifetimes.rs b/tests/ui/traits/matching-lifetimes.rs
index 1430dc655..1430dc655 100644
--- a/src/test/ui/traits/matching-lifetimes.rs
+++ b/tests/ui/traits/matching-lifetimes.rs
diff --git a/src/test/ui/traits/matching-lifetimes.stderr b/tests/ui/traits/matching-lifetimes.stderr
index de1c878a5..f8119ed41 100644
--- a/src/test/ui/traits/matching-lifetimes.stderr
+++ b/tests/ui/traits/matching-lifetimes.stderr
@@ -4,8 +4,8 @@ error[E0308]: method not compatible with trait
LL | fn foo(x: Foo<'b,'a>) {
| ^^^^^^^^^^^^^^^^^^^^^ lifetime mismatch
|
- = note: expected fn pointer `fn(Foo<'a, 'b>)`
- found fn pointer `fn(Foo<'b, 'a>)`
+ = note: expected signature `fn(Foo<'a, 'b>)`
+ found signature `fn(Foo<'b, 'a>)`
note: the lifetime `'b` as defined here...
--> $DIR/matching-lifetimes.rs:13:9
|
@@ -23,8 +23,8 @@ error[E0308]: method not compatible with trait
LL | fn foo(x: Foo<'b,'a>) {
| ^^^^^^^^^^^^^^^^^^^^^ lifetime mismatch
|
- = note: expected fn pointer `fn(Foo<'a, 'b>)`
- found fn pointer `fn(Foo<'b, 'a>)`
+ = note: expected signature `fn(Foo<'a, 'b>)`
+ found signature `fn(Foo<'b, 'a>)`
note: the lifetime `'a` as defined here...
--> $DIR/matching-lifetimes.rs:13:6
|
diff --git a/src/test/ui/traits/method-private.rs b/tests/ui/traits/method-private.rs
index 4cd184854..4cd184854 100644
--- a/src/test/ui/traits/method-private.rs
+++ b/tests/ui/traits/method-private.rs
diff --git a/src/test/ui/traits/method-private.stderr b/tests/ui/traits/method-private.stderr
index 8e991ec01..8e991ec01 100644
--- a/src/test/ui/traits/method-private.stderr
+++ b/tests/ui/traits/method-private.stderr
diff --git a/src/test/ui/traits/monad.rs b/tests/ui/traits/monad.rs
index 5d0612cf8..5d0612cf8 100644
--- a/src/test/ui/traits/monad.rs
+++ b/tests/ui/traits/monad.rs
diff --git a/src/test/ui/traits/monomorphized-callees-with-ty-params-3314.rs b/tests/ui/traits/monomorphized-callees-with-ty-params-3314.rs
index bc314a39d..bc314a39d 100644
--- a/src/test/ui/traits/monomorphized-callees-with-ty-params-3314.rs
+++ b/tests/ui/traits/monomorphized-callees-with-ty-params-3314.rs
diff --git a/src/test/ui/traits/multidispatch-bad.rs b/tests/ui/traits/multidispatch-bad.rs
index b625b9615..b625b9615 100644
--- a/src/test/ui/traits/multidispatch-bad.rs
+++ b/tests/ui/traits/multidispatch-bad.rs
diff --git a/src/test/ui/traits/multidispatch-bad.stderr b/tests/ui/traits/multidispatch-bad.stderr
index d58f1e2d9..d58f1e2d9 100644
--- a/src/test/ui/traits/multidispatch-bad.stderr
+++ b/tests/ui/traits/multidispatch-bad.stderr
diff --git a/src/test/ui/traits/multidispatch-conditional-impl-not-considered.rs b/tests/ui/traits/multidispatch-conditional-impl-not-considered.rs
index f845e198a..f845e198a 100644
--- a/src/test/ui/traits/multidispatch-conditional-impl-not-considered.rs
+++ b/tests/ui/traits/multidispatch-conditional-impl-not-considered.rs
diff --git a/src/test/ui/traits/multidispatch-convert-ambig-dest.rs b/tests/ui/traits/multidispatch-convert-ambig-dest.rs
index aa74e11c3..aa74e11c3 100644
--- a/src/test/ui/traits/multidispatch-convert-ambig-dest.rs
+++ b/tests/ui/traits/multidispatch-convert-ambig-dest.rs
diff --git a/src/test/ui/traits/multidispatch-convert-ambig-dest.stderr b/tests/ui/traits/multidispatch-convert-ambig-dest.stderr
index 6e6172eea..6e6172eea 100644
--- a/src/test/ui/traits/multidispatch-convert-ambig-dest.stderr
+++ b/tests/ui/traits/multidispatch-convert-ambig-dest.stderr
diff --git a/src/test/ui/traits/multidispatch-infer-convert-target.rs b/tests/ui/traits/multidispatch-infer-convert-target.rs
index 626e1ae71..626e1ae71 100644
--- a/src/test/ui/traits/multidispatch-infer-convert-target.rs
+++ b/tests/ui/traits/multidispatch-infer-convert-target.rs
diff --git a/src/test/ui/traits/multidispatch1.rs b/tests/ui/traits/multidispatch1.rs
index f2469e149..f2469e149 100644
--- a/src/test/ui/traits/multidispatch1.rs
+++ b/tests/ui/traits/multidispatch1.rs
diff --git a/src/test/ui/traits/multidispatch2.rs b/tests/ui/traits/multidispatch2.rs
index 20608aabb..20608aabb 100644
--- a/src/test/ui/traits/multidispatch2.rs
+++ b/tests/ui/traits/multidispatch2.rs
diff --git a/src/test/ui/traits/mutual-recursion-issue-75860.rs b/tests/ui/traits/mutual-recursion-issue-75860.rs
index d7d7307b4..d7d7307b4 100644
--- a/src/test/ui/traits/mutual-recursion-issue-75860.rs
+++ b/tests/ui/traits/mutual-recursion-issue-75860.rs
diff --git a/src/test/ui/traits/mutual-recursion-issue-75860.stderr b/tests/ui/traits/mutual-recursion-issue-75860.stderr
index 920f66121..23e182738 100644
--- a/src/test/ui/traits/mutual-recursion-issue-75860.stderr
+++ b/tests/ui/traits/mutual-recursion-issue-75860.stderr
@@ -7,9 +7,6 @@ LL | iso(left, right)
= help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`mutual_recursion_issue_75860`)
note: required by a bound in `Option`
--> $SRC_DIR/core/src/option.rs:LL:COL
- |
-LL | pub enum Option<T> {
- | ^ required by this bound in `Option`
error: aborting due to previous error
diff --git a/src/test/ui/traits/negative-impls/auxiliary/foreign_trait.rs b/tests/ui/traits/negative-impls/auxiliary/foreign_trait.rs
index 0e17f0890..0e17f0890 100644
--- a/src/test/ui/traits/negative-impls/auxiliary/foreign_trait.rs
+++ b/tests/ui/traits/negative-impls/auxiliary/foreign_trait.rs
diff --git a/src/test/ui/traits/negative-impls/eager-mono.rs b/tests/ui/traits/negative-impls/eager-mono.rs
index ce770376c..ce770376c 100644
--- a/src/test/ui/traits/negative-impls/eager-mono.rs
+++ b/tests/ui/traits/negative-impls/eager-mono.rs
diff --git a/src/test/ui/traits/negative-impls/explicitly-unimplemented-error-message.rs b/tests/ui/traits/negative-impls/explicitly-unimplemented-error-message.rs
index 17ddaa312..17ddaa312 100644
--- a/src/test/ui/traits/negative-impls/explicitly-unimplemented-error-message.rs
+++ b/tests/ui/traits/negative-impls/explicitly-unimplemented-error-message.rs
diff --git a/src/test/ui/traits/negative-impls/explicitly-unimplemented-error-message.stderr b/tests/ui/traits/negative-impls/explicitly-unimplemented-error-message.stderr
index b29442d7b..b29442d7b 100644
--- a/src/test/ui/traits/negative-impls/explicitly-unimplemented-error-message.stderr
+++ b/tests/ui/traits/negative-impls/explicitly-unimplemented-error-message.stderr
diff --git a/src/test/ui/traits/negative-impls/feature-gate-negative_impls.rs b/tests/ui/traits/negative-impls/feature-gate-negative_impls.rs
index 683fd6db6..683fd6db6 100644
--- a/src/test/ui/traits/negative-impls/feature-gate-negative_impls.rs
+++ b/tests/ui/traits/negative-impls/feature-gate-negative_impls.rs
diff --git a/src/test/ui/traits/negative-impls/feature-gate-negative_impls.stderr b/tests/ui/traits/negative-impls/feature-gate-negative_impls.stderr
index b253fbd0d..b253fbd0d 100644
--- a/src/test/ui/traits/negative-impls/feature-gate-negative_impls.stderr
+++ b/tests/ui/traits/negative-impls/feature-gate-negative_impls.stderr
diff --git a/src/test/ui/traits/negative-impls/negated-auto-traits-error.rs b/tests/ui/traits/negative-impls/negated-auto-traits-error.rs
index 4bdad5dc5..4bdad5dc5 100644
--- a/src/test/ui/traits/negative-impls/negated-auto-traits-error.rs
+++ b/tests/ui/traits/negative-impls/negated-auto-traits-error.rs
diff --git a/src/test/ui/traits/negative-impls/negated-auto-traits-error.stderr b/tests/ui/traits/negative-impls/negated-auto-traits-error.stderr
index 41fc3600f..ce690b749 100644
--- a/src/test/ui/traits/negative-impls/negated-auto-traits-error.stderr
+++ b/tests/ui/traits/negative-impls/negated-auto-traits-error.stderr
@@ -50,7 +50,7 @@ LL | is_send((8, TestType));
| required by a bound introduced by this call
|
= help: within `({integer}, dummy1c::TestType)`, the trait `Send` is not implemented for `dummy1c::TestType`
- = note: required because it appears within the type `({integer}, dummy1c::TestType)`
+ = note: required because it appears within the type `({integer}, TestType)`
note: required by a bound in `is_send`
--> $DIR/negated-auto-traits-error.rs:16:15
|
@@ -67,7 +67,7 @@ LL | is_send(Box::new(TestType));
|
= note: the trait bound `Unique<dummy2::TestType>: Send` is not satisfied
= note: required for `Unique<dummy2::TestType>` to implement `Send`
- = note: required because it appears within the type `Box<dummy2::TestType>`
+ = note: required because it appears within the type `Box<TestType>`
note: required by a bound in `is_send`
--> $DIR/negated-auto-traits-error.rs:16:15
|
@@ -87,13 +87,13 @@ LL | is_send(Box::new(Outer2(TestType)));
| required by a bound introduced by this call
|
= help: within `Outer2<dummy3::TestType>`, the trait `Send` is not implemented for `dummy3::TestType`
-note: required because it appears within the type `Outer2<dummy3::TestType>`
+note: required because it appears within the type `Outer2<TestType>`
--> $DIR/negated-auto-traits-error.rs:12:8
|
LL | struct Outer2<T>(T);
| ^^^^^^
= note: required for `Unique<Outer2<dummy3::TestType>>` to implement `Send`
- = note: required because it appears within the type `Box<Outer2<dummy3::TestType>>`
+ = note: required because it appears within the type `Box<Outer2<TestType>>`
note: required by a bound in `is_send`
--> $DIR/negated-auto-traits-error.rs:16:15
|
@@ -113,7 +113,9 @@ note: required for `Outer2<main::TestType>` to implement `Sync`
--> $DIR/negated-auto-traits-error.rs:14:22
|
LL | unsafe impl<T: Send> Sync for Outer2<T> {}
- | ^^^^ ^^^^^^^^^
+ | ---- ^^^^ ^^^^^^^^^
+ | |
+ | unsatisfied trait bound introduced here
note: required by a bound in `is_sync`
--> $DIR/negated-auto-traits-error.rs:17:15
|
diff --git a/src/test/ui/traits/negative-impls/negated-auto-traits-rpass.rs b/tests/ui/traits/negative-impls/negated-auto-traits-rpass.rs
index a1042f831..a1042f831 100644
--- a/src/test/ui/traits/negative-impls/negated-auto-traits-rpass.rs
+++ b/tests/ui/traits/negative-impls/negated-auto-traits-rpass.rs
diff --git a/src/test/ui/traits/negative-impls/negative-default-impls.rs b/tests/ui/traits/negative-impls/negative-default-impls.rs
index c68bca432..c68bca432 100644
--- a/src/test/ui/traits/negative-impls/negative-default-impls.rs
+++ b/tests/ui/traits/negative-impls/negative-default-impls.rs
diff --git a/src/test/ui/traits/negative-impls/negative-default-impls.stderr b/tests/ui/traits/negative-impls/negative-default-impls.stderr
index 7b54cf542..7b54cf542 100644
--- a/src/test/ui/traits/negative-impls/negative-default-impls.stderr
+++ b/tests/ui/traits/negative-impls/negative-default-impls.stderr
diff --git a/src/test/ui/traits/negative-impls/negative-impls-basic.rs b/tests/ui/traits/negative-impls/negative-impls-basic.rs
index 474e03817..474e03817 100644
--- a/src/test/ui/traits/negative-impls/negative-impls-basic.rs
+++ b/tests/ui/traits/negative-impls/negative-impls-basic.rs
diff --git a/src/test/ui/traits/negative-impls/negative-specializes-negative.rs b/tests/ui/traits/negative-impls/negative-specializes-negative.rs
index 35297ab12..35297ab12 100644
--- a/src/test/ui/traits/negative-impls/negative-specializes-negative.rs
+++ b/tests/ui/traits/negative-impls/negative-specializes-negative.rs
diff --git a/src/test/ui/traits/negative-impls/negative-specializes-negative.stderr b/tests/ui/traits/negative-impls/negative-specializes-negative.stderr
index 751e29c3b..751e29c3b 100644
--- a/src/test/ui/traits/negative-impls/negative-specializes-negative.stderr
+++ b/tests/ui/traits/negative-impls/negative-specializes-negative.stderr
diff --git a/src/test/ui/traits/negative-impls/negative-specializes-positive-item.rs b/tests/ui/traits/negative-impls/negative-specializes-positive-item.rs
index 4281eedaf..4281eedaf 100644
--- a/src/test/ui/traits/negative-impls/negative-specializes-positive-item.rs
+++ b/tests/ui/traits/negative-impls/negative-specializes-positive-item.rs
diff --git a/src/test/ui/traits/negative-impls/negative-specializes-positive-item.stderr b/tests/ui/traits/negative-impls/negative-specializes-positive-item.stderr
index 1cfa49b20..1cfa49b20 100644
--- a/src/test/ui/traits/negative-impls/negative-specializes-positive-item.stderr
+++ b/tests/ui/traits/negative-impls/negative-specializes-positive-item.stderr
diff --git a/src/test/ui/traits/negative-impls/negative-specializes-positive.rs b/tests/ui/traits/negative-impls/negative-specializes-positive.rs
index 0e227691e..0e227691e 100644
--- a/src/test/ui/traits/negative-impls/negative-specializes-positive.rs
+++ b/tests/ui/traits/negative-impls/negative-specializes-positive.rs
diff --git a/src/test/ui/traits/negative-impls/negative-specializes-positive.stderr b/tests/ui/traits/negative-impls/negative-specializes-positive.stderr
index 9f9e28678..9f9e28678 100644
--- a/src/test/ui/traits/negative-impls/negative-specializes-positive.stderr
+++ b/tests/ui/traits/negative-impls/negative-specializes-positive.stderr
diff --git a/src/test/ui/traits/negative-impls/no-items.rs b/tests/ui/traits/negative-impls/no-items.rs
index 5fc6be9b3..5fc6be9b3 100644
--- a/src/test/ui/traits/negative-impls/no-items.rs
+++ b/tests/ui/traits/negative-impls/no-items.rs
diff --git a/src/test/ui/traits/negative-impls/no-items.stderr b/tests/ui/traits/negative-impls/no-items.stderr
index 67b94bba1..67b94bba1 100644
--- a/src/test/ui/traits/negative-impls/no-items.stderr
+++ b/tests/ui/traits/negative-impls/no-items.stderr
diff --git a/src/test/ui/traits/negative-impls/pin-unsound-issue-66544-clone.rs b/tests/ui/traits/negative-impls/pin-unsound-issue-66544-clone.rs
index a5b856465..a5b856465 100644
--- a/src/test/ui/traits/negative-impls/pin-unsound-issue-66544-clone.rs
+++ b/tests/ui/traits/negative-impls/pin-unsound-issue-66544-clone.rs
diff --git a/src/test/ui/traits/negative-impls/pin-unsound-issue-66544-clone.stderr b/tests/ui/traits/negative-impls/pin-unsound-issue-66544-clone.stderr
index a87acb1fb..a87acb1fb 100644
--- a/src/test/ui/traits/negative-impls/pin-unsound-issue-66544-clone.stderr
+++ b/tests/ui/traits/negative-impls/pin-unsound-issue-66544-clone.stderr
diff --git a/src/test/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.rs b/tests/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.rs
index 606cc65a8..606cc65a8 100644
--- a/src/test/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.rs
+++ b/tests/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.rs
diff --git a/src/test/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.stderr b/tests/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.stderr
index 9185e8f84..9185e8f84 100644
--- a/src/test/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.stderr
+++ b/tests/ui/traits/negative-impls/pin-unsound-issue-66544-derefmut.stderr
diff --git a/src/test/ui/traits/negative-impls/positive-specializes-negative.rs b/tests/ui/traits/negative-impls/positive-specializes-negative.rs
index a06b35765..a06b35765 100644
--- a/src/test/ui/traits/negative-impls/positive-specializes-negative.rs
+++ b/tests/ui/traits/negative-impls/positive-specializes-negative.rs
diff --git a/src/test/ui/traits/negative-impls/positive-specializes-negative.stderr b/tests/ui/traits/negative-impls/positive-specializes-negative.stderr
index 545f94143..545f94143 100644
--- a/src/test/ui/traits/negative-impls/positive-specializes-negative.stderr
+++ b/tests/ui/traits/negative-impls/positive-specializes-negative.stderr
diff --git a/src/test/ui/traits/negative-impls/rely-on-negative-impl-in-coherence.rs b/tests/ui/traits/negative-impls/rely-on-negative-impl-in-coherence.rs
index c1f96ab8c..c1f96ab8c 100644
--- a/src/test/ui/traits/negative-impls/rely-on-negative-impl-in-coherence.rs
+++ b/tests/ui/traits/negative-impls/rely-on-negative-impl-in-coherence.rs
diff --git a/tests/ui/traits/new-solver/fn-trait-closure.rs b/tests/ui/traits/new-solver/fn-trait-closure.rs
new file mode 100644
index 000000000..c0ecf1c91
--- /dev/null
+++ b/tests/ui/traits/new-solver/fn-trait-closure.rs
@@ -0,0 +1,15 @@
+// compile-flags: -Ztrait-solver=next
+// known-bug: unknown
+// failure-status: 101
+// dont-check-compiler-stderr
+
+// This test will fail until we fix `FulfillmentCtxt::relationships`. That's
+// because we create a type variable for closure upvar types, which is not
+// constrained until after we try to do fallback on diverging type variables.
+// Thus, we will call that function, which is unimplemented.
+
+fn require_fn(_: impl Fn() -> i32) {}
+
+fn main() {
+ require_fn(|| -> i32 { 1i32 });
+}
diff --git a/tests/ui/traits/new-solver/fn-trait.rs b/tests/ui/traits/new-solver/fn-trait.rs
new file mode 100644
index 000000000..d566ead10
--- /dev/null
+++ b/tests/ui/traits/new-solver/fn-trait.rs
@@ -0,0 +1,13 @@
+// compile-flags: -Ztrait-solver=next
+// check-pass
+
+fn require_fn(_: impl Fn() -> i32) {}
+
+fn f() -> i32 {
+ 1i32
+}
+
+fn main() {
+ require_fn(f);
+ require_fn(f as fn() -> i32);
+}
diff --git a/tests/ui/traits/new-solver/pointer-sized.rs b/tests/ui/traits/new-solver/pointer-sized.rs
new file mode 100644
index 000000000..15681cd13
--- /dev/null
+++ b/tests/ui/traits/new-solver/pointer-sized.rs
@@ -0,0 +1,12 @@
+#![feature(pointer_sized_trait)]
+
+use std::marker::PointerSized;
+
+fn require_pointer_sized(_: impl PointerSized) {}
+
+fn main() {
+ require_pointer_sized(1usize);
+ require_pointer_sized(1u16);
+ //~^ ERROR `u16` needs to be a pointer-sized type
+ require_pointer_sized(&1i16);
+}
diff --git a/tests/ui/traits/new-solver/pointer-sized.stderr b/tests/ui/traits/new-solver/pointer-sized.stderr
new file mode 100644
index 000000000..b250b1331
--- /dev/null
+++ b/tests/ui/traits/new-solver/pointer-sized.stderr
@@ -0,0 +1,24 @@
+error[E0277]: `u16` needs to be a pointer-sized type
+ --> $DIR/pointer-sized.rs:9:27
+ |
+LL | require_pointer_sized(1u16);
+ | --------------------- ^^^^ the trait `PointerSized` is not implemented for `u16`
+ | |
+ | required by a bound introduced by this call
+ |
+ = note: the trait bound `u16: PointerSized` is not satisfied
+note: required by a bound in `require_pointer_sized`
+ --> $DIR/pointer-sized.rs:5:34
+ |
+LL | fn require_pointer_sized(_: impl PointerSized) {}
+ | ^^^^^^^^^^^^ required by this bound in `require_pointer_sized`
+help: consider borrowing here
+ |
+LL | require_pointer_sized(&1u16);
+ | +
+LL | require_pointer_sized(&mut 1u16);
+ | ++++
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/traits/no-fallback-multiple-impls.rs b/tests/ui/traits/no-fallback-multiple-impls.rs
index 7ed3796f0..7ed3796f0 100644
--- a/src/test/ui/traits/no-fallback-multiple-impls.rs
+++ b/tests/ui/traits/no-fallback-multiple-impls.rs
diff --git a/src/test/ui/traits/no-fallback-multiple-impls.stderr b/tests/ui/traits/no-fallback-multiple-impls.stderr
index 61c9e5aaa..61c9e5aaa 100644
--- a/src/test/ui/traits/no-fallback-multiple-impls.stderr
+++ b/tests/ui/traits/no-fallback-multiple-impls.stderr
diff --git a/src/test/ui/traits/no_send-struct.rs b/tests/ui/traits/no_send-struct.rs
index 75a363f9f..75a363f9f 100644
--- a/src/test/ui/traits/no_send-struct.rs
+++ b/tests/ui/traits/no_send-struct.rs
diff --git a/src/test/ui/traits/no_send-struct.stderr b/tests/ui/traits/no_send-struct.stderr
index ee7bdf282..ee7bdf282 100644
--- a/src/test/ui/traits/no_send-struct.stderr
+++ b/tests/ui/traits/no_send-struct.stderr
diff --git a/src/test/ui/traits/normalize-supertrait.rs b/tests/ui/traits/normalize-supertrait.rs
index 021a93eac..021a93eac 100644
--- a/src/test/ui/traits/normalize-supertrait.rs
+++ b/tests/ui/traits/normalize-supertrait.rs
diff --git a/src/test/ui/traits/not-suggest-non-existing-fully-qualified-path.rs b/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.rs
index 538e74ee1..538e74ee1 100644
--- a/src/test/ui/traits/not-suggest-non-existing-fully-qualified-path.rs
+++ b/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.rs
diff --git a/src/test/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr b/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr
index 53178328c..92d9d32cf 100644
--- a/src/test/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr
+++ b/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr
@@ -27,6 +27,9 @@ note: required for `A<B>` to implement `V<_>`
|
LL | impl<T, U> V<U> for A<T>
| ^^^^ ^^^^
+LL | where
+LL | T: I<U>,
+ | ---- unsatisfied trait bound introduced here
help: try using a fully qualified path to specify the expected types
|
LL | <A<B> as V<U>>::method(a);
diff --git a/src/test/ui/traits/object-does-not-impl-trait.rs b/tests/ui/traits/object-does-not-impl-trait.rs
index b3b679813..b3b679813 100644
--- a/src/test/ui/traits/object-does-not-impl-trait.rs
+++ b/tests/ui/traits/object-does-not-impl-trait.rs
diff --git a/src/test/ui/traits/object-does-not-impl-trait.stderr b/tests/ui/traits/object-does-not-impl-trait.stderr
index f1dd508a4..f1dd508a4 100644
--- a/src/test/ui/traits/object-does-not-impl-trait.stderr
+++ b/tests/ui/traits/object-does-not-impl-trait.stderr
diff --git a/src/test/ui/traits/object-one-type-two-traits.rs b/tests/ui/traits/object-one-type-two-traits.rs
index 86a2094ee..86a2094ee 100644
--- a/src/test/ui/traits/object-one-type-two-traits.rs
+++ b/tests/ui/traits/object-one-type-two-traits.rs
diff --git a/src/test/ui/traits/object/auto-dedup-in-impl.rs b/tests/ui/traits/object/auto-dedup-in-impl.rs
index 85698f194..85698f194 100644
--- a/src/test/ui/traits/object/auto-dedup-in-impl.rs
+++ b/tests/ui/traits/object/auto-dedup-in-impl.rs
diff --git a/src/test/ui/traits/object/auto-dedup-in-impl.stderr b/tests/ui/traits/object/auto-dedup-in-impl.stderr
index 5f13c7813..5f13c7813 100644
--- a/src/test/ui/traits/object/auto-dedup-in-impl.stderr
+++ b/tests/ui/traits/object/auto-dedup-in-impl.stderr
diff --git a/src/test/ui/traits/object/auto-dedup.rs b/tests/ui/traits/object/auto-dedup.rs
index 39d25eb7f..39d25eb7f 100644
--- a/src/test/ui/traits/object/auto-dedup.rs
+++ b/tests/ui/traits/object/auto-dedup.rs
diff --git a/src/test/ui/traits/object/bounds-cycle-1.rs b/tests/ui/traits/object/bounds-cycle-1.rs
index 314676492..314676492 100644
--- a/src/test/ui/traits/object/bounds-cycle-1.rs
+++ b/tests/ui/traits/object/bounds-cycle-1.rs
diff --git a/src/test/ui/traits/object/bounds-cycle-2.rs b/tests/ui/traits/object/bounds-cycle-2.rs
index 4c1df3805..4c1df3805 100644
--- a/src/test/ui/traits/object/bounds-cycle-2.rs
+++ b/tests/ui/traits/object/bounds-cycle-2.rs
diff --git a/src/test/ui/traits/object/bounds-cycle-3.rs b/tests/ui/traits/object/bounds-cycle-3.rs
index 55726a5ae..55726a5ae 100644
--- a/src/test/ui/traits/object/bounds-cycle-3.rs
+++ b/tests/ui/traits/object/bounds-cycle-3.rs
diff --git a/src/test/ui/traits/object/bounds-cycle-4.rs b/tests/ui/traits/object/bounds-cycle-4.rs
index f83cb75c7..f83cb75c7 100644
--- a/src/test/ui/traits/object/bounds-cycle-4.rs
+++ b/tests/ui/traits/object/bounds-cycle-4.rs
diff --git a/src/test/ui/traits/object/enforce-supertrait-projection.rs b/tests/ui/traits/object/enforce-supertrait-projection.rs
index 2c9b41eea..2c9b41eea 100644
--- a/src/test/ui/traits/object/enforce-supertrait-projection.rs
+++ b/tests/ui/traits/object/enforce-supertrait-projection.rs
diff --git a/src/test/ui/traits/object/enforce-supertrait-projection.stderr b/tests/ui/traits/object/enforce-supertrait-projection.stderr
index cbf093866..cbf093866 100644
--- a/src/test/ui/traits/object/enforce-supertrait-projection.stderr
+++ b/tests/ui/traits/object/enforce-supertrait-projection.stderr
diff --git a/src/test/ui/traits/object/exclusion.rs b/tests/ui/traits/object/exclusion.rs
index 766dceeaf..766dceeaf 100644
--- a/src/test/ui/traits/object/exclusion.rs
+++ b/tests/ui/traits/object/exclusion.rs
diff --git a/src/test/ui/traits/object/generics.rs b/tests/ui/traits/object/generics.rs
index 5a4a6aecc..5a4a6aecc 100644
--- a/src/test/ui/traits/object/generics.rs
+++ b/tests/ui/traits/object/generics.rs
diff --git a/src/test/ui/traits/object/issue-33140-traitobject-crate.rs b/tests/ui/traits/object/issue-33140-traitobject-crate.rs
index 8abd92da3..8abd92da3 100644
--- a/src/test/ui/traits/object/issue-33140-traitobject-crate.rs
+++ b/tests/ui/traits/object/issue-33140-traitobject-crate.rs
diff --git a/src/test/ui/traits/object/issue-33140-traitobject-crate.stderr b/tests/ui/traits/object/issue-33140-traitobject-crate.stderr
index 525401f9d..525401f9d 100644
--- a/src/test/ui/traits/object/issue-33140-traitobject-crate.stderr
+++ b/tests/ui/traits/object/issue-33140-traitobject-crate.stderr
diff --git a/tests/ui/traits/object/issue-44454-1.rs b/tests/ui/traits/object/issue-44454-1.rs
new file mode 100644
index 000000000..bbaf3188a
--- /dev/null
+++ b/tests/ui/traits/object/issue-44454-1.rs
@@ -0,0 +1,22 @@
+// Taken from https://github.com/rust-lang/rust/issues/44454#issue-256435333
+
+trait Animal<X>: 'static {}
+
+fn foo<Y, X>()
+where
+ Y: Animal<X> + ?Sized,
+{
+ // `Y` implements `Animal<X>` so `Y` is 'static.
+ baz::<Y>()
+}
+
+fn bar<'a>(_arg: &'a i32) {
+ foo::<dyn Animal<&'a i32>, &'a i32>() //~ ERROR: lifetime may not live long enough
+}
+
+fn baz<T: 'static + ?Sized>() {}
+
+fn main() {
+ let a = 5;
+ bar(&a);
+}
diff --git a/tests/ui/traits/object/issue-44454-1.stderr b/tests/ui/traits/object/issue-44454-1.stderr
new file mode 100644
index 000000000..859487f50
--- /dev/null
+++ b/tests/ui/traits/object/issue-44454-1.stderr
@@ -0,0 +1,10 @@
+error: lifetime may not live long enough
+ --> $DIR/issue-44454-1.rs:14:5
+ |
+LL | fn bar<'a>(_arg: &'a i32) {
+ | -- lifetime `'a` defined here
+LL | foo::<dyn Animal<&'a i32>, &'a i32>()
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
+
+error: aborting due to previous error
+
diff --git a/tests/ui/traits/object/issue-44454-2.rs b/tests/ui/traits/object/issue-44454-2.rs
new file mode 100644
index 000000000..f5178bcdb
--- /dev/null
+++ b/tests/ui/traits/object/issue-44454-2.rs
@@ -0,0 +1,22 @@
+// Taken from https://github.com/rust-lang/rust/issues/44454#issuecomment-1175925928
+
+trait Trait<ARG: 'static>: 'static {
+ type Assoc: AsRef<str>;
+}
+
+fn hr<T: ?Sized, ARG>(x: T::Assoc) -> Box<dyn AsRef<str> + 'static>
+where
+ T: Trait<ARG>
+{
+ Box::new(x)
+}
+
+fn extend_lt<'a>(x: &'a str) -> Box<dyn AsRef<str> + 'static> {
+ type DynTrait = dyn for<'a> Trait<&'a str, Assoc = &'a str>;
+ hr::<DynTrait, _>(x) //~ ERROR: borrowed data escapes outside of function
+}
+
+fn main() {
+ let extended = extend_lt(&String::from("hello"));
+ println!("{}", extended.as_ref().as_ref());
+}
diff --git a/tests/ui/traits/object/issue-44454-2.stderr b/tests/ui/traits/object/issue-44454-2.stderr
new file mode 100644
index 000000000..7f574769b
--- /dev/null
+++ b/tests/ui/traits/object/issue-44454-2.stderr
@@ -0,0 +1,17 @@
+error[E0521]: borrowed data escapes outside of function
+ --> $DIR/issue-44454-2.rs:16:5
+ |
+LL | fn extend_lt<'a>(x: &'a str) -> Box<dyn AsRef<str> + 'static> {
+ | -- - `x` is a reference that is only valid in the function body
+ | |
+ | lifetime `'a` defined here
+LL | type DynTrait = dyn for<'a> Trait<&'a str, Assoc = &'a str>;
+LL | hr::<DynTrait, _>(x)
+ | ^^^^^^^^^^^^^^^^^^^^
+ | |
+ | `x` escapes the function body here
+ | argument requires that `'a` must outlive `'static`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0521`.
diff --git a/tests/ui/traits/object/issue-44454-3.rs b/tests/ui/traits/object/issue-44454-3.rs
new file mode 100644
index 000000000..bff727035
--- /dev/null
+++ b/tests/ui/traits/object/issue-44454-3.rs
@@ -0,0 +1,33 @@
+// Taken from https://github.com/rust-lang/rust/issues/44454#issuecomment-1332781290
+
+use std::any::Any;
+
+trait Animal<X>: 'static {}
+
+trait Projector {
+ type Foo;
+}
+
+impl<X> Projector for dyn Animal<X> {
+ type Foo = X;
+}
+
+fn make_static<'a, T>(t: &'a T) -> &'static T {
+ let x: <dyn Animal<&'a T> as Projector>::Foo = t;
+ let any = generic::<dyn Animal<&'a T>, &'a T>(x);
+ //~^ ERROR: lifetime may not live long enough
+ any.downcast_ref::<&'static T>().unwrap()
+}
+
+fn generic<T: Projector + Animal<U> + ?Sized, U>(x: <T as Projector>::Foo) -> Box<dyn Any> {
+ make_static_any(x)
+}
+
+fn make_static_any<U: 'static>(u: U) -> Box<dyn Any> {
+ Box::new(u)
+}
+
+fn main() {
+ let a = make_static(&"salut".to_string());
+ println!("{}", *a);
+}
diff --git a/tests/ui/traits/object/issue-44454-3.stderr b/tests/ui/traits/object/issue-44454-3.stderr
new file mode 100644
index 000000000..294684d26
--- /dev/null
+++ b/tests/ui/traits/object/issue-44454-3.stderr
@@ -0,0 +1,11 @@
+error: lifetime may not live long enough
+ --> $DIR/issue-44454-3.rs:17:15
+ |
+LL | fn make_static<'a, T>(t: &'a T) -> &'static T {
+ | -- lifetime `'a` defined here
+LL | let x: <dyn Animal<&'a T> as Projector>::Foo = t;
+LL | let any = generic::<dyn Animal<&'a T>, &'a T>(x);
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/traits/object/lifetime-first.rs b/tests/ui/traits/object/lifetime-first.rs
index 33757cb7c..33757cb7c 100644
--- a/src/test/ui/traits/object/lifetime-first.rs
+++ b/tests/ui/traits/object/lifetime-first.rs
diff --git a/src/test/ui/traits/object/macro-matcher.rs b/tests/ui/traits/object/macro-matcher.rs
index 910978749..910978749 100644
--- a/src/test/ui/traits/object/macro-matcher.rs
+++ b/tests/ui/traits/object/macro-matcher.rs
diff --git a/src/test/ui/traits/object/macro-matcher.stderr b/tests/ui/traits/object/macro-matcher.stderr
index 6d1e236c0..6d1e236c0 100644
--- a/src/test/ui/traits/object/macro-matcher.stderr
+++ b/tests/ui/traits/object/macro-matcher.stderr
diff --git a/src/test/ui/traits/object/safety.rs b/tests/ui/traits/object/safety.rs
index f43d332d6..f43d332d6 100644
--- a/src/test/ui/traits/object/safety.rs
+++ b/tests/ui/traits/object/safety.rs
diff --git a/src/test/ui/traits/object/safety.stderr b/tests/ui/traits/object/safety.stderr
index dc18adeaf..dc18adeaf 100644
--- a/src/test/ui/traits/object/safety.stderr
+++ b/tests/ui/traits/object/safety.stderr
diff --git a/src/test/ui/traits/object/supertrait-lifetime-bound.rs b/tests/ui/traits/object/supertrait-lifetime-bound.rs
index f929a9bb6..f929a9bb6 100644
--- a/src/test/ui/traits/object/supertrait-lifetime-bound.rs
+++ b/tests/ui/traits/object/supertrait-lifetime-bound.rs
diff --git a/src/test/ui/traits/object/supertrait-lifetime-bound.stderr b/tests/ui/traits/object/supertrait-lifetime-bound.stderr
index ed2f86243..ed2f86243 100644
--- a/src/test/ui/traits/object/supertrait-lifetime-bound.stderr
+++ b/tests/ui/traits/object/supertrait-lifetime-bound.stderr
diff --git a/src/test/ui/traits/object/vs-lifetime-2.rs b/tests/ui/traits/object/vs-lifetime-2.rs
index 0b33dc7f6..0b33dc7f6 100644
--- a/src/test/ui/traits/object/vs-lifetime-2.rs
+++ b/tests/ui/traits/object/vs-lifetime-2.rs
diff --git a/src/test/ui/traits/object/vs-lifetime-2.stderr b/tests/ui/traits/object/vs-lifetime-2.stderr
index 9b8e793df..9b8e793df 100644
--- a/src/test/ui/traits/object/vs-lifetime-2.stderr
+++ b/tests/ui/traits/object/vs-lifetime-2.stderr
diff --git a/src/test/ui/traits/object/vs-lifetime.rs b/tests/ui/traits/object/vs-lifetime.rs
index 14ae67cff..14ae67cff 100644
--- a/src/test/ui/traits/object/vs-lifetime.rs
+++ b/tests/ui/traits/object/vs-lifetime.rs
diff --git a/src/test/ui/traits/object/vs-lifetime.stderr b/tests/ui/traits/object/vs-lifetime.stderr
index 224465228..224465228 100644
--- a/src/test/ui/traits/object/vs-lifetime.stderr
+++ b/tests/ui/traits/object/vs-lifetime.stderr
diff --git a/src/test/ui/traits/object/with-lifetime-bound.rs b/tests/ui/traits/object/with-lifetime-bound.rs
index 05aab5e3b..05aab5e3b 100644
--- a/src/test/ui/traits/object/with-lifetime-bound.rs
+++ b/tests/ui/traits/object/with-lifetime-bound.rs
diff --git a/src/test/ui/traits/object/with-self-in-projection-output-bad.rs b/tests/ui/traits/object/with-self-in-projection-output-bad.rs
index f34fa80a0..f34fa80a0 100644
--- a/src/test/ui/traits/object/with-self-in-projection-output-bad.rs
+++ b/tests/ui/traits/object/with-self-in-projection-output-bad.rs
diff --git a/src/test/ui/traits/object/with-self-in-projection-output-bad.stderr b/tests/ui/traits/object/with-self-in-projection-output-bad.stderr
index 641bfe236..641bfe236 100644
--- a/src/test/ui/traits/object/with-self-in-projection-output-bad.stderr
+++ b/tests/ui/traits/object/with-self-in-projection-output-bad.stderr
diff --git a/src/test/ui/traits/object/with-self-in-projection-output-good.rs b/tests/ui/traits/object/with-self-in-projection-output-good.rs
index d1b7bf6c2..d1b7bf6c2 100644
--- a/src/test/ui/traits/object/with-self-in-projection-output-good.rs
+++ b/tests/ui/traits/object/with-self-in-projection-output-good.rs
diff --git a/src/test/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs b/tests/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs
index 39e817168..39e817168 100644
--- a/src/test/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs
+++ b/tests/ui/traits/object/with-self-in-projection-output-repeated-supertrait.rs
diff --git a/src/test/ui/traits/objects-owned-object-borrowed-method-headerless.rs b/tests/ui/traits/objects-owned-object-borrowed-method-headerless.rs
index fce1341fc..fce1341fc 100644
--- a/src/test/ui/traits/objects-owned-object-borrowed-method-headerless.rs
+++ b/tests/ui/traits/objects-owned-object-borrowed-method-headerless.rs
diff --git a/src/test/ui/traits/operator-overloading-issue-52025.rs b/tests/ui/traits/operator-overloading-issue-52025.rs
index 7ce638832..7ce638832 100644
--- a/src/test/ui/traits/operator-overloading-issue-52025.rs
+++ b/tests/ui/traits/operator-overloading-issue-52025.rs
diff --git a/src/test/ui/traits/overlap-not-permitted-for-builtin-trait.rs b/tests/ui/traits/overlap-not-permitted-for-builtin-trait.rs
index 4106f56d6..4106f56d6 100644
--- a/src/test/ui/traits/overlap-not-permitted-for-builtin-trait.rs
+++ b/tests/ui/traits/overlap-not-permitted-for-builtin-trait.rs
diff --git a/src/test/ui/traits/overlap-not-permitted-for-builtin-trait.stderr b/tests/ui/traits/overlap-not-permitted-for-builtin-trait.stderr
index e24ed695d..e24ed695d 100644
--- a/src/test/ui/traits/overlap-not-permitted-for-builtin-trait.stderr
+++ b/tests/ui/traits/overlap-not-permitted-for-builtin-trait.stderr
diff --git a/src/test/ui/traits/overlap-permitted-for-marker-traits.rs b/tests/ui/traits/overlap-permitted-for-marker-traits.rs
index 00823d13b..00823d13b 100644
--- a/src/test/ui/traits/overlap-permitted-for-marker-traits.rs
+++ b/tests/ui/traits/overlap-permitted-for-marker-traits.rs
diff --git a/src/test/ui/traits/param-without-lifetime-constraint.rs b/tests/ui/traits/param-without-lifetime-constraint.rs
index a79b74dcd..a79b74dcd 100644
--- a/src/test/ui/traits/param-without-lifetime-constraint.rs
+++ b/tests/ui/traits/param-without-lifetime-constraint.rs
diff --git a/src/test/ui/traits/param-without-lifetime-constraint.stderr b/tests/ui/traits/param-without-lifetime-constraint.stderr
index 118b2cf3e..b128b6518 100644
--- a/src/test/ui/traits/param-without-lifetime-constraint.stderr
+++ b/tests/ui/traits/param-without-lifetime-constraint.stderr
@@ -7,8 +7,8 @@ LL | fn get_relation(&self) -> To;
LL | fn get_relation(&self) -> &ProofReader {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ found `fn(&'1 Article) -> &'1 ProofReader`
|
- = note: expected `fn(&'1 Article) -> &'2 ProofReader`
- found `fn(&'1 Article) -> &'1 ProofReader`
+ = note: expected signature `fn(&'1 Article) -> &'2 ProofReader`
+ found signature `fn(&'1 Article) -> &'1 ProofReader`
help: the lifetime requirements from the `impl` do not correspond to the requirements in the `trait`
--> $DIR/param-without-lifetime-constraint.rs:10:31
|
diff --git a/src/test/ui/traits/parameterized-with-bounds.rs b/tests/ui/traits/parameterized-with-bounds.rs
index 832d4f6c8..832d4f6c8 100644
--- a/src/test/ui/traits/parameterized-with-bounds.rs
+++ b/tests/ui/traits/parameterized-with-bounds.rs
diff --git a/src/test/ui/traits/pointee-deduction.rs b/tests/ui/traits/pointee-deduction.rs
index c333b0129..c333b0129 100644
--- a/src/test/ui/traits/pointee-deduction.rs
+++ b/tests/ui/traits/pointee-deduction.rs
diff --git a/src/test/ui/traits/pointee-tail-is-generic-errors.rs b/tests/ui/traits/pointee-tail-is-generic-errors.rs
index 28bc1da96..28bc1da96 100644
--- a/src/test/ui/traits/pointee-tail-is-generic-errors.rs
+++ b/tests/ui/traits/pointee-tail-is-generic-errors.rs
diff --git a/src/test/ui/traits/pointee-tail-is-generic-errors.stderr b/tests/ui/traits/pointee-tail-is-generic-errors.stderr
index 0c3d7060d..0c3d7060d 100644
--- a/src/test/ui/traits/pointee-tail-is-generic-errors.stderr
+++ b/tests/ui/traits/pointee-tail-is-generic-errors.stderr
diff --git a/src/test/ui/traits/pointee-tail-is-generic.rs b/tests/ui/traits/pointee-tail-is-generic.rs
index e0da0fc38..e0da0fc38 100644
--- a/src/test/ui/traits/pointee-tail-is-generic.rs
+++ b/tests/ui/traits/pointee-tail-is-generic.rs
diff --git a/src/test/ui/traits/principal-less-objects.rs b/tests/ui/traits/principal-less-objects.rs
index 62bad0d7d..62bad0d7d 100644
--- a/src/test/ui/traits/principal-less-objects.rs
+++ b/tests/ui/traits/principal-less-objects.rs
diff --git a/src/test/ui/traits/privacy.rs b/tests/ui/traits/privacy.rs
index 17a2e05e9..17a2e05e9 100644
--- a/src/test/ui/traits/privacy.rs
+++ b/tests/ui/traits/privacy.rs
diff --git a/src/test/ui/traits/project-modulo-regions.rs b/tests/ui/traits/project-modulo-regions.rs
index f0c0dd3ed..f0c0dd3ed 100644
--- a/src/test/ui/traits/project-modulo-regions.rs
+++ b/tests/ui/traits/project-modulo-regions.rs
diff --git a/src/test/ui/traits/project-modulo-regions.with_clause.stderr b/tests/ui/traits/project-modulo-regions.with_clause.stderr
index 2434c32c8..2434c32c8 100644
--- a/src/test/ui/traits/project-modulo-regions.with_clause.stderr
+++ b/tests/ui/traits/project-modulo-regions.with_clause.stderr
diff --git a/src/test/ui/traits/project-modulo-regions.without_clause.stderr b/tests/ui/traits/project-modulo-regions.without_clause.stderr
index 9d35690d5..9d35690d5 100644
--- a/src/test/ui/traits/project-modulo-regions.without_clause.stderr
+++ b/tests/ui/traits/project-modulo-regions.without_clause.stderr
diff --git a/src/test/ui/traits/region-pointer-simple.rs b/tests/ui/traits/region-pointer-simple.rs
index 0456ca931..0456ca931 100644
--- a/src/test/ui/traits/region-pointer-simple.rs
+++ b/tests/ui/traits/region-pointer-simple.rs
diff --git a/src/test/ui/traits/reservation-impl/coherence-conflict.rs b/tests/ui/traits/reservation-impl/coherence-conflict.rs
index fa4a30931..fa4a30931 100644
--- a/src/test/ui/traits/reservation-impl/coherence-conflict.rs
+++ b/tests/ui/traits/reservation-impl/coherence-conflict.rs
diff --git a/src/test/ui/traits/reservation-impl/coherence-conflict.stderr b/tests/ui/traits/reservation-impl/coherence-conflict.stderr
index a811d7e32..a811d7e32 100644
--- a/src/test/ui/traits/reservation-impl/coherence-conflict.stderr
+++ b/tests/ui/traits/reservation-impl/coherence-conflict.stderr
diff --git a/src/test/ui/traits/reservation-impl/no-use.rs b/tests/ui/traits/reservation-impl/no-use.rs
index 65a55d9e2..65a55d9e2 100644
--- a/src/test/ui/traits/reservation-impl/no-use.rs
+++ b/tests/ui/traits/reservation-impl/no-use.rs
diff --git a/src/test/ui/traits/reservation-impl/no-use.stderr b/tests/ui/traits/reservation-impl/no-use.stderr
index cefb2a879..cefb2a879 100644
--- a/src/test/ui/traits/reservation-impl/no-use.stderr
+++ b/tests/ui/traits/reservation-impl/no-use.stderr
diff --git a/src/test/ui/traits/reservation-impl/non-lattice-ok.rs b/tests/ui/traits/reservation-impl/non-lattice-ok.rs
index a71051243..a71051243 100644
--- a/src/test/ui/traits/reservation-impl/non-lattice-ok.rs
+++ b/tests/ui/traits/reservation-impl/non-lattice-ok.rs
diff --git a/src/test/ui/traits/reservation-impl/ok.rs b/tests/ui/traits/reservation-impl/ok.rs
index 611c8d884..611c8d884 100644
--- a/src/test/ui/traits/reservation-impl/ok.rs
+++ b/tests/ui/traits/reservation-impl/ok.rs
diff --git a/src/test/ui/traits/resolution-in-overloaded-op.rs b/tests/ui/traits/resolution-in-overloaded-op.rs
index a9bacc357..a9bacc357 100644
--- a/src/test/ui/traits/resolution-in-overloaded-op.rs
+++ b/tests/ui/traits/resolution-in-overloaded-op.rs
diff --git a/src/test/ui/traits/resolution-in-overloaded-op.stderr b/tests/ui/traits/resolution-in-overloaded-op.stderr
index fe5e1d6d2..fe5e1d6d2 100644
--- a/src/test/ui/traits/resolution-in-overloaded-op.stderr
+++ b/tests/ui/traits/resolution-in-overloaded-op.stderr
diff --git a/src/test/ui/traits/safety-fn-body.mir.stderr b/tests/ui/traits/safety-fn-body.mir.stderr
index ea7b2048e..ea7b2048e 100644
--- a/src/test/ui/traits/safety-fn-body.mir.stderr
+++ b/tests/ui/traits/safety-fn-body.mir.stderr
diff --git a/src/test/ui/traits/safety-fn-body.rs b/tests/ui/traits/safety-fn-body.rs
index 2cc4fe1b3..2cc4fe1b3 100644
--- a/src/test/ui/traits/safety-fn-body.rs
+++ b/tests/ui/traits/safety-fn-body.rs
diff --git a/src/test/ui/traits/safety-fn-body.thir.stderr b/tests/ui/traits/safety-fn-body.thir.stderr
index 23696c32b..23696c32b 100644
--- a/src/test/ui/traits/safety-fn-body.thir.stderr
+++ b/tests/ui/traits/safety-fn-body.thir.stderr
diff --git a/src/test/ui/traits/safety-inherent-impl.rs b/tests/ui/traits/safety-inherent-impl.rs
index 50e15f0d2..50e15f0d2 100644
--- a/src/test/ui/traits/safety-inherent-impl.rs
+++ b/tests/ui/traits/safety-inherent-impl.rs
diff --git a/src/test/ui/traits/safety-inherent-impl.stderr b/tests/ui/traits/safety-inherent-impl.stderr
index 1c8f43fec..1c8f43fec 100644
--- a/src/test/ui/traits/safety-inherent-impl.stderr
+++ b/tests/ui/traits/safety-inherent-impl.stderr
diff --git a/src/test/ui/traits/safety-ok-cc.rs b/tests/ui/traits/safety-ok-cc.rs
index 099ba80e5..099ba80e5 100644
--- a/src/test/ui/traits/safety-ok-cc.rs
+++ b/tests/ui/traits/safety-ok-cc.rs
diff --git a/src/test/ui/traits/safety-ok.rs b/tests/ui/traits/safety-ok.rs
index d456a78b6..d456a78b6 100644
--- a/src/test/ui/traits/safety-ok.rs
+++ b/tests/ui/traits/safety-ok.rs
diff --git a/src/test/ui/traits/safety-trait-impl-cc.rs b/tests/ui/traits/safety-trait-impl-cc.rs
index 6f125e5f9..6f125e5f9 100644
--- a/src/test/ui/traits/safety-trait-impl-cc.rs
+++ b/tests/ui/traits/safety-trait-impl-cc.rs
diff --git a/src/test/ui/traits/safety-trait-impl-cc.stderr b/tests/ui/traits/safety-trait-impl-cc.stderr
index 0b1fb3047..0ca565787 100644
--- a/src/test/ui/traits/safety-trait-impl-cc.stderr
+++ b/tests/ui/traits/safety-trait-impl-cc.stderr
@@ -1,12 +1,8 @@
error[E0200]: the trait `Foo` requires an `unsafe impl` declaration
--> $DIR/safety-trait-impl-cc.rs:9:1
|
-LL | / impl lib::Foo for Bar {
-LL | | fn foo(&self) -> isize {
-LL | | panic!();
-LL | | }
-LL | | }
- | |_^
+LL | impl lib::Foo for Bar {
+ | ^^^^^^^^^^^^^^^^^^^^^
|
= note: the trait `Foo` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
help: add `unsafe` to this trait implementation
diff --git a/src/test/ui/traits/safety-trait-impl.rs b/tests/ui/traits/safety-trait-impl.rs
index 45258b78d..45258b78d 100644
--- a/src/test/ui/traits/safety-trait-impl.rs
+++ b/tests/ui/traits/safety-trait-impl.rs
diff --git a/src/test/ui/traits/safety-trait-impl.stderr b/tests/ui/traits/safety-trait-impl.stderr
index 721e2b48b..e78e0e3a6 100644
--- a/src/test/ui/traits/safety-trait-impl.stderr
+++ b/tests/ui/traits/safety-trait-impl.stderr
@@ -2,7 +2,7 @@ error[E0200]: the trait `UnsafeTrait` requires an `unsafe impl` declaration
--> $DIR/safety-trait-impl.rs:14:1
|
LL | impl UnsafeTrait for u16 { }
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ | ^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: the trait `UnsafeTrait` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
help: add `unsafe` to this trait implementation
@@ -14,7 +14,7 @@ error[E0199]: implementing the trait `SafeTrait` is not unsafe
--> $DIR/safety-trait-impl.rs:16:1
|
LL | unsafe impl SafeTrait for u32 { }
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
help: remove `unsafe` from this trait implementation
|
diff --git a/src/test/ui/traits/self-without-lifetime-constraint.rs b/tests/ui/traits/self-without-lifetime-constraint.rs
index 99013d32a..99013d32a 100644
--- a/src/test/ui/traits/self-without-lifetime-constraint.rs
+++ b/tests/ui/traits/self-without-lifetime-constraint.rs
diff --git a/src/test/ui/traits/self-without-lifetime-constraint.stderr b/tests/ui/traits/self-without-lifetime-constraint.stderr
index 85fada3b8..05a49820a 100644
--- a/src/test/ui/traits/self-without-lifetime-constraint.stderr
+++ b/tests/ui/traits/self-without-lifetime-constraint.stderr
@@ -7,8 +7,8 @@ LL | fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self, &Self>;
LL | fn column_result(value: ValueRef<'_>) -> FromSqlResult<&str, &&str> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ found `fn(ValueRef<'1>) -> Result<(&'1 str, &'1 &'1 str), FromSqlError>`
|
- = note: expected `fn(ValueRef<'1>) -> Result<(&'2 str, &'1 &'2 str), FromSqlError>`
- found `fn(ValueRef<'1>) -> Result<(&'1 str, &'1 &'1 str), FromSqlError>`
+ = note: expected signature `fn(ValueRef<'1>) -> Result<(&'2 str, &'1 &'2 str), FromSqlError>`
+ found signature `fn(ValueRef<'1>) -> Result<(&'1 str, &'1 &'1 str), FromSqlError>`
help: the lifetime requirements from the `impl` do not correspond to the requirements in the `trait`
--> $DIR/self-without-lifetime-constraint.rs:41:60
|
diff --git a/tests/ui/traits/solver-cycles/inductive-canonical-cycle.rs b/tests/ui/traits/solver-cycles/inductive-canonical-cycle.rs
new file mode 100644
index 000000000..5449f5f00
--- /dev/null
+++ b/tests/ui/traits/solver-cycles/inductive-canonical-cycle.rs
@@ -0,0 +1,69 @@
+// check-pass
+
+// This test checks that we're correctly dealing with inductive cycles
+// with canonical inference variables.
+
+trait Trait<T, U> {}
+
+trait IsNotU32 {}
+impl IsNotU32 for i32 {}
+impl<T: IsNotU32, U> Trait<T, U> for () // impl 1
+where
+ (): Trait<U, T>
+{}
+
+impl<T> Trait<u32, T> for () {} // impl 2
+
+// If we now check whether `(): Trait<?0, ?1>` holds this has to
+// result in ambiguity as both `for<T> (): Trait<u32, T>` and `(): Trait<i32, u32>`
+// applies. The remainder of this test asserts that.
+
+// If we were to error on inductive cycles with canonical inference variables
+// this would be wrong:
+
+// (): Trait<?0, ?1>
+// - impl 1
+// - ?0: IsNotU32 // ambig
+// - (): Trait<?1, ?0> // canonical cycle -> err
+// - ERR
+// - impl 2
+// - OK ?0 == u32
+//
+// Result: OK ?0 == u32.
+
+// (): Trait<i32, u32>
+// - impl 1
+// - i32: IsNotU32 // ok
+// - (): Trait<u32, i32>
+// - impl 1
+// - u32: IsNotU32 // err
+// - ERR
+// - impl 2
+// - OK
+// - OK
+// - impl 2 (trivial ERR)
+//
+// Result OK
+
+// This would mean that `(): Trait<?0, ?1>` is not complete,
+// which is unsound if we're in coherence.
+
+fn implements_trait<T, U>() -> (T, U)
+where
+ (): Trait<T, U>,
+{
+ todo!()
+}
+
+// A hack to only constrain the infer vars after first checking
+// the `(): Trait<_, _>`.
+trait Constrain<T> {}
+impl<T> Constrain<T> for T {}
+fn constrain<T: Constrain<U>, U>(_: U) {}
+
+fn main() {
+ let (x, y) = implements_trait::<_, _>();
+
+ constrain::<i32, _>(x);
+ constrain::<u32, _>(y);
+}
diff --git a/src/test/ui/traits/static-method-generic-inference.rs b/tests/ui/traits/static-method-generic-inference.rs
index f4e94c4f7..f4e94c4f7 100644
--- a/src/test/ui/traits/static-method-generic-inference.rs
+++ b/tests/ui/traits/static-method-generic-inference.rs
diff --git a/src/test/ui/traits/static-method-generic-inference.stderr b/tests/ui/traits/static-method-generic-inference.stderr
index 5f74d0c3b..575ace237 100644
--- a/src/test/ui/traits/static-method-generic-inference.stderr
+++ b/tests/ui/traits/static-method-generic-inference.stderr
@@ -9,8 +9,8 @@ LL | let _f: base::Foo = base::HasNew::new();
|
help: use the fully-qualified path to the only available implementation
|
-LL | let _f: base::Foo = base::<Foo as HasNew>::new();
- | +++++++ +
+LL | let _f: base::Foo = <Foo as base::HasNew>::new();
+ | +++++++ +
error: aborting due to previous error
diff --git a/src/test/ui/traits/static-method-overwriting.rs b/tests/ui/traits/static-method-overwriting.rs
index f669ffae6..f669ffae6 100644
--- a/src/test/ui/traits/static-method-overwriting.rs
+++ b/tests/ui/traits/static-method-overwriting.rs
diff --git a/src/test/ui/traits/static-outlives-a-where-clause.rs b/tests/ui/traits/static-outlives-a-where-clause.rs
index f0c2c1082..f0c2c1082 100644
--- a/src/test/ui/traits/static-outlives-a-where-clause.rs
+++ b/tests/ui/traits/static-outlives-a-where-clause.rs
diff --git a/src/test/ui/traits/staticness-mismatch.rs b/tests/ui/traits/staticness-mismatch.rs
index 8710d0112..8710d0112 100644
--- a/src/test/ui/traits/staticness-mismatch.rs
+++ b/tests/ui/traits/staticness-mismatch.rs
diff --git a/src/test/ui/traits/staticness-mismatch.stderr b/tests/ui/traits/staticness-mismatch.stderr
index b67ac5adb..b67ac5adb 100644
--- a/src/test/ui/traits/staticness-mismatch.stderr
+++ b/tests/ui/traits/staticness-mismatch.stderr
diff --git a/src/test/ui/traits/suggest-deferences/issue-39029.fixed b/tests/ui/traits/suggest-deferences/issue-39029.fixed
index a1abf668b..a1abf668b 100644
--- a/src/test/ui/traits/suggest-deferences/issue-39029.fixed
+++ b/tests/ui/traits/suggest-deferences/issue-39029.fixed
diff --git a/src/test/ui/traits/suggest-deferences/issue-39029.rs b/tests/ui/traits/suggest-deferences/issue-39029.rs
index 90d097105..90d097105 100644
--- a/src/test/ui/traits/suggest-deferences/issue-39029.rs
+++ b/tests/ui/traits/suggest-deferences/issue-39029.rs
diff --git a/src/test/ui/traits/suggest-deferences/issue-39029.stderr b/tests/ui/traits/suggest-deferences/issue-39029.stderr
index eb2b88059..49e20c6a7 100644
--- a/src/test/ui/traits/suggest-deferences/issue-39029.stderr
+++ b/tests/ui/traits/suggest-deferences/issue-39029.stderr
@@ -9,9 +9,6 @@ LL | let _errors = TcpListener::bind(&bad);
= note: required for `&NoToSocketAddrs` to implement `ToSocketAddrs`
note: required by a bound in `TcpListener::bind`
--> $SRC_DIR/std/src/net/tcp.rs:LL:COL
- |
-LL | pub fn bind<A: ToSocketAddrs>(addr: A) -> io::Result<TcpListener> {
- | ^^^^^^^^^^^^^ required by this bound in `TcpListener::bind`
help: consider dereferencing here
|
LL | let _errors = TcpListener::bind(&*bad);
diff --git a/src/test/ui/traits/suggest-deferences/issue-62530.fixed b/tests/ui/traits/suggest-deferences/issue-62530.fixed
index 406caaa00..406caaa00 100644
--- a/src/test/ui/traits/suggest-deferences/issue-62530.fixed
+++ b/tests/ui/traits/suggest-deferences/issue-62530.fixed
diff --git a/src/test/ui/traits/suggest-deferences/issue-62530.rs b/tests/ui/traits/suggest-deferences/issue-62530.rs
index 53846be73..53846be73 100644
--- a/src/test/ui/traits/suggest-deferences/issue-62530.rs
+++ b/tests/ui/traits/suggest-deferences/issue-62530.rs
diff --git a/src/test/ui/traits/suggest-deferences/issue-62530.stderr b/tests/ui/traits/suggest-deferences/issue-62530.stderr
index e47ae0b65..e47ae0b65 100644
--- a/src/test/ui/traits/suggest-deferences/issue-62530.stderr
+++ b/tests/ui/traits/suggest-deferences/issue-62530.stderr
diff --git a/src/test/ui/traits/suggest-deferences/multiple-0.fixed b/tests/ui/traits/suggest-deferences/multiple-0.fixed
index b7160b75c..b7160b75c 100644
--- a/src/test/ui/traits/suggest-deferences/multiple-0.fixed
+++ b/tests/ui/traits/suggest-deferences/multiple-0.fixed
diff --git a/src/test/ui/traits/suggest-deferences/multiple-0.rs b/tests/ui/traits/suggest-deferences/multiple-0.rs
index 9ac55177f..9ac55177f 100644
--- a/src/test/ui/traits/suggest-deferences/multiple-0.rs
+++ b/tests/ui/traits/suggest-deferences/multiple-0.rs
diff --git a/src/test/ui/traits/suggest-deferences/multiple-0.stderr b/tests/ui/traits/suggest-deferences/multiple-0.stderr
index 6a4d4b8d5..6a4d4b8d5 100644
--- a/src/test/ui/traits/suggest-deferences/multiple-0.stderr
+++ b/tests/ui/traits/suggest-deferences/multiple-0.stderr
diff --git a/src/test/ui/traits/suggest-deferences/multiple-1.rs b/tests/ui/traits/suggest-deferences/multiple-1.rs
index 91c6c7924..91c6c7924 100644
--- a/src/test/ui/traits/suggest-deferences/multiple-1.rs
+++ b/tests/ui/traits/suggest-deferences/multiple-1.rs
diff --git a/src/test/ui/traits/suggest-deferences/multiple-1.stderr b/tests/ui/traits/suggest-deferences/multiple-1.stderr
index 6e12321c2..6e12321c2 100644
--- a/src/test/ui/traits/suggest-deferences/multiple-1.stderr
+++ b/tests/ui/traits/suggest-deferences/multiple-1.stderr
diff --git a/src/test/ui/traits/suggest-deferences/root-obligation.fixed b/tests/ui/traits/suggest-deferences/root-obligation.fixed
index 7a8433f90..7a8433f90 100644
--- a/src/test/ui/traits/suggest-deferences/root-obligation.fixed
+++ b/tests/ui/traits/suggest-deferences/root-obligation.fixed
diff --git a/src/test/ui/traits/suggest-deferences/root-obligation.rs b/tests/ui/traits/suggest-deferences/root-obligation.rs
index 51bac2107..51bac2107 100644
--- a/src/test/ui/traits/suggest-deferences/root-obligation.rs
+++ b/tests/ui/traits/suggest-deferences/root-obligation.rs
diff --git a/src/test/ui/traits/suggest-deferences/root-obligation.stderr b/tests/ui/traits/suggest-deferences/root-obligation.stderr
index 76663ace7..1363fb8c4 100644
--- a/src/test/ui/traits/suggest-deferences/root-obligation.stderr
+++ b/tests/ui/traits/suggest-deferences/root-obligation.stderr
@@ -11,9 +11,6 @@ LL | .filter(|c| "aeiou".contains(c))
= note: required for `&char` to implement `Pattern<'_>`
note: required by a bound in `core::str::<impl str>::contains`
--> $SRC_DIR/core/src/str/mod.rs:LL:COL
- |
-LL | pub fn contains<'a, P: Pattern<'a>>(&'a self, pat: P) -> bool {
- | ^^^^^^^^^^^ required by this bound in `core::str::<impl str>::contains`
help: consider dereferencing here
|
LL | .filter(|c| "aeiou".contains(*c))
diff --git a/tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.fixed b/tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.fixed
new file mode 100644
index 000000000..ea3d1bf85
--- /dev/null
+++ b/tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.fixed
@@ -0,0 +1,14 @@
+// run-rustfix
+
+struct TargetStruct;
+
+impl From<usize> for TargetStruct {
+ fn from(_unchecked: usize) -> Self {
+ TargetStruct
+ }
+}
+
+fn main() {
+ let a = &3;
+ let _b: TargetStruct = (*a).into(); //~ ERROR the trait bound `TargetStruct: From<&{integer}>` is not satisfied
+}
diff --git a/tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.rs b/tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.rs
new file mode 100644
index 000000000..9eda68027
--- /dev/null
+++ b/tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.rs
@@ -0,0 +1,14 @@
+// run-rustfix
+
+struct TargetStruct;
+
+impl From<usize> for TargetStruct {
+ fn from(_unchecked: usize) -> Self {
+ TargetStruct
+ }
+}
+
+fn main() {
+ let a = &3;
+ let _b: TargetStruct = a.into(); //~ ERROR the trait bound `TargetStruct: From<&{integer}>` is not satisfied
+}
diff --git a/tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.stderr b/tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.stderr
new file mode 100644
index 000000000..ede31a2c7
--- /dev/null
+++ b/tests/ui/traits/suggest-deferences/suggest-dereferencing-receiver-argument.stderr
@@ -0,0 +1,15 @@
+error[E0277]: the trait bound `TargetStruct: From<&{integer}>` is not satisfied
+ --> $DIR/suggest-dereferencing-receiver-argument.rs:13:30
+ |
+LL | let _b: TargetStruct = a.into();
+ | ^^^^ the trait `From<&{integer}>` is not implemented for `TargetStruct`
+ |
+ = note: required for `&{integer}` to implement `Into<TargetStruct>`
+help: consider dereferencing here
+ |
+LL | let _b: TargetStruct = (*a).into();
+ | ++ +
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/traits/suggest-fully-qualified-closure.rs b/tests/ui/traits/suggest-fully-qualified-closure.rs
index c077921c0..c077921c0 100644
--- a/src/test/ui/traits/suggest-fully-qualified-closure.rs
+++ b/tests/ui/traits/suggest-fully-qualified-closure.rs
diff --git a/src/test/ui/traits/suggest-fully-qualified-closure.stderr b/tests/ui/traits/suggest-fully-qualified-closure.stderr
index 3df623c14..3df623c14 100644
--- a/src/test/ui/traits/suggest-fully-qualified-closure.stderr
+++ b/tests/ui/traits/suggest-fully-qualified-closure.stderr
diff --git a/src/test/ui/traits/suggest-fully-qualified-path-with-adjustment.rs b/tests/ui/traits/suggest-fully-qualified-path-with-adjustment.rs
index 9a2cf469d..9a2cf469d 100644
--- a/src/test/ui/traits/suggest-fully-qualified-path-with-adjustment.rs
+++ b/tests/ui/traits/suggest-fully-qualified-path-with-adjustment.rs
diff --git a/src/test/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr b/tests/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr
index 68b31a1ca..68b31a1ca 100644
--- a/src/test/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr
+++ b/tests/ui/traits/suggest-fully-qualified-path-with-adjustment.stderr
diff --git a/src/test/ui/traits/suggest-fully-qualified-path-without-adjustment.rs b/tests/ui/traits/suggest-fully-qualified-path-without-adjustment.rs
index da640c8c8..da640c8c8 100644
--- a/src/test/ui/traits/suggest-fully-qualified-path-without-adjustment.rs
+++ b/tests/ui/traits/suggest-fully-qualified-path-without-adjustment.rs
diff --git a/src/test/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr b/tests/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr
index 27518a54e..27518a54e 100644
--- a/src/test/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr
+++ b/tests/ui/traits/suggest-fully-qualified-path-without-adjustment.stderr
diff --git a/src/test/ui/traits/suggest-where-clause.rs b/tests/ui/traits/suggest-where-clause.rs
index 46d047a2d..46d047a2d 100644
--- a/src/test/ui/traits/suggest-where-clause.rs
+++ b/tests/ui/traits/suggest-where-clause.rs
diff --git a/src/test/ui/traits/suggest-where-clause.stderr b/tests/ui/traits/suggest-where-clause.stderr
index 747e2477b..44e63b78c 100644
--- a/src/test/ui/traits/suggest-where-clause.stderr
+++ b/tests/ui/traits/suggest-where-clause.stderr
@@ -9,9 +9,6 @@ LL | mem::size_of::<U>();
|
note: required by a bound in `std::mem::size_of`
--> $SRC_DIR/core/src/mem/mod.rs:LL:COL
- |
-LL | pub const fn size_of<T>() -> usize {
- | ^ required by this bound in `std::mem::size_of`
help: consider removing the `?Sized` bound to make the type parameter `Sized`
|
LL - fn check<T: Iterator, U: ?Sized>() {
@@ -34,9 +31,6 @@ LL | struct Misc<T:?Sized>(T);
| ^^^^
note: required by a bound in `std::mem::size_of`
--> $SRC_DIR/core/src/mem/mod.rs:LL:COL
- |
-LL | pub const fn size_of<T>() -> usize {
- | ^ required by this bound in `std::mem::size_of`
help: consider removing the `?Sized` bound to make the type parameter `Sized`
|
LL - fn check<T: Iterator, U: ?Sized>() {
@@ -80,9 +74,6 @@ LL | mem::size_of::<[T]>();
= help: the trait `Sized` is not implemented for `[T]`
note: required by a bound in `std::mem::size_of`
--> $SRC_DIR/core/src/mem/mod.rs:LL:COL
- |
-LL | pub const fn size_of<T>() -> usize {
- | ^ required by this bound in `std::mem::size_of`
error[E0277]: the size for values of type `[&U]` cannot be known at compilation time
--> $DIR/suggest-where-clause.rs:31:20
@@ -93,9 +84,6 @@ LL | mem::size_of::<[&U]>();
= help: the trait `Sized` is not implemented for `[&U]`
note: required by a bound in `std::mem::size_of`
--> $SRC_DIR/core/src/mem/mod.rs:LL:COL
- |
-LL | pub const fn size_of<T>() -> usize {
- | ^ required by this bound in `std::mem::size_of`
error: aborting due to 7 previous errors
diff --git a/src/test/ui/traits/superdefault-generics.rs b/tests/ui/traits/superdefault-generics.rs
index e862c0e97..e862c0e97 100644
--- a/src/test/ui/traits/superdefault-generics.rs
+++ b/tests/ui/traits/superdefault-generics.rs
diff --git a/src/test/ui/traits/syntax-polarity.rs b/tests/ui/traits/syntax-polarity.rs
index c809f9e89..c809f9e89 100644
--- a/src/test/ui/traits/syntax-polarity.rs
+++ b/tests/ui/traits/syntax-polarity.rs
diff --git a/src/test/ui/traits/syntax-trait-polarity.rs b/tests/ui/traits/syntax-trait-polarity.rs
index ed2947493..ed2947493 100644
--- a/src/test/ui/traits/syntax-trait-polarity.rs
+++ b/tests/ui/traits/syntax-trait-polarity.rs
diff --git a/src/test/ui/traits/syntax-trait-polarity.stderr b/tests/ui/traits/syntax-trait-polarity.stderr
index 1fd40fb66..1fd40fb66 100644
--- a/src/test/ui/traits/syntax-trait-polarity.stderr
+++ b/tests/ui/traits/syntax-trait-polarity.stderr
diff --git a/src/test/ui/traits/test-2.rs b/tests/ui/traits/test-2.rs
index 342928e88..342928e88 100644
--- a/src/test/ui/traits/test-2.rs
+++ b/tests/ui/traits/test-2.rs
diff --git a/src/test/ui/traits/test-2.stderr b/tests/ui/traits/test-2.stderr
index eaa20b0b4..eaa20b0b4 100644
--- a/src/test/ui/traits/test-2.stderr
+++ b/tests/ui/traits/test-2.stderr
diff --git a/src/test/ui/traits/test.rs b/tests/ui/traits/test.rs
index 72fc66f74..72fc66f74 100644
--- a/src/test/ui/traits/test.rs
+++ b/tests/ui/traits/test.rs
diff --git a/src/test/ui/traits/test.stderr b/tests/ui/traits/test.stderr
index 668228abe..668228abe 100644
--- a/src/test/ui/traits/test.stderr
+++ b/tests/ui/traits/test.stderr
diff --git a/src/test/ui/traits/to-str.rs b/tests/ui/traits/to-str.rs
index 9670edbfa..9670edbfa 100644
--- a/src/test/ui/traits/to-str.rs
+++ b/tests/ui/traits/to-str.rs
diff --git a/tests/ui/traits/track-obligations.rs b/tests/ui/traits/track-obligations.rs
new file mode 100644
index 000000000..77e753c13
--- /dev/null
+++ b/tests/ui/traits/track-obligations.rs
@@ -0,0 +1,88 @@
+// These are simplifications of the tower traits by the same name:
+
+pub trait Service<Request> {
+ type Response;
+}
+
+pub trait Layer<C> {
+ type Service;
+}
+
+// Any type will do here:
+
+pub struct Req;
+pub struct Res;
+
+// This is encoding a trait alias.
+
+pub trait ParticularService:
+ Service<Req, Response = Res> {
+}
+
+impl<T> ParticularService for T
+where
+ T: Service<Req, Response = Res>,
+{
+}
+
+// This is also a trait alias.
+// The weird = <Self as ...> bound is there so that users of the trait do not
+// need to repeat the bounds. See https://github.com/rust-lang/rust/issues/20671
+// for context, and in particular the workaround in:
+// https://github.com/rust-lang/rust/issues/20671#issuecomment-529752828
+
+pub trait ParticularServiceLayer<C>:
+ Layer<C, Service = <Self as ParticularServiceLayer<C>>::Service>
+{
+ type Service: ParticularService;
+}
+
+impl<T, C> ParticularServiceLayer<C> for T
+where
+ T: Layer<C>,
+ T::Service: ParticularService,
+{
+ type Service = T::Service;
+}
+
+// These are types that implement the traits that the trait aliases refer to.
+// They should also implement the alias traits due to the blanket impls.
+
+struct ALayer<C>(C);
+impl<C> Layer<C> for ALayer<C> {
+ type Service = AService;
+}
+
+struct AService;
+impl Service<Req> for AService {
+ // However, AService does _not_ meet the blanket implementation,
+ // since its Response type is bool, not Res as it should be.
+ type Response = bool;
+}
+
+// This is a wrapper type around ALayer that uses the trait alias
+// as a way to communicate the requirements of the provided types.
+struct Client<C>(C);
+
+// The method and the free-standing function below both have the same bounds.
+
+impl<C> Client<C>
+where
+ ALayer<C>: ParticularServiceLayer<C>,
+{
+ fn check(&self) {}
+}
+
+fn check<C>(_: C) where ALayer<C>: ParticularServiceLayer<C> {}
+
+// But, they give very different error messages.
+
+fn main() {
+ // This gives a very poor error message that does nothing to point the user
+ // at the underlying cause of why the types involved do not meet the bounds.
+ Client(()).check(); //~ ERROR E0599
+
+ // This gives a good(ish) error message that points the user at _why_ the
+ // bound isn't met, and thus how they might fix it.
+ check(()); //~ ERROR E0271
+}
diff --git a/tests/ui/traits/track-obligations.stderr b/tests/ui/traits/track-obligations.stderr
new file mode 100644
index 000000000..894774759
--- /dev/null
+++ b/tests/ui/traits/track-obligations.stderr
@@ -0,0 +1,76 @@
+error[E0599]: the method `check` exists for struct `Client<()>`, but its trait bounds were not satisfied
+ --> $DIR/track-obligations.rs:83:16
+ |
+LL | struct ALayer<C>(C);
+ | ----------------
+ | |
+ | doesn't satisfy `<_ as Layer<()>>::Service = <ALayer<()> as ParticularServiceLayer<()>>::Service`
+ | doesn't satisfy `ALayer<()>: ParticularServiceLayer<()>`
+...
+LL | struct Client<C>(C);
+ | ---------------- method `check` not found for this struct
+...
+LL | Client(()).check();
+ | ^^^^^ method cannot be called on `Client<()>` due to unsatisfied trait bounds
+ |
+note: trait bound `<ALayer<()> as Layer<()>>::Service = <ALayer<()> as ParticularServiceLayer<()>>::Service` was not satisfied
+ --> $DIR/track-obligations.rs:35:14
+ |
+LL | pub trait ParticularServiceLayer<C>:
+ | ----------------------
+LL | Layer<C, Service = <Self as ParticularServiceLayer<C>>::Service>
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound introduced here
+note: trait bound `ALayer<()>: ParticularServiceLayer<()>` was not satisfied
+ --> $DIR/track-obligations.rs:71:16
+ |
+LL | impl<C> Client<C>
+ | ---------
+LL | where
+LL | ALayer<C>: ParticularServiceLayer<C>,
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound introduced here
+note: the trait `ParticularServiceLayer` must be implemented
+ --> $DIR/track-obligations.rs:34:1
+ |
+LL | / pub trait ParticularServiceLayer<C>:
+LL | | Layer<C, Service = <Self as ParticularServiceLayer<C>>::Service>
+ | |____________________________________________________________________^
+
+error[E0271]: type mismatch resolving `<AService as Service<Req>>::Response == Res`
+ --> $DIR/track-obligations.rs:87:11
+ |
+LL | check(());
+ | ----- ^^ type mismatch resolving `<AService as Service<Req>>::Response == Res`
+ | |
+ | required by a bound introduced by this call
+ |
+note: expected this to be `Res`
+ --> $DIR/track-obligations.rs:60:21
+ |
+LL | type Response = bool;
+ | ^^^^
+note: required for `AService` to implement `ParticularService`
+ --> $DIR/track-obligations.rs:22:9
+ |
+LL | impl<T> ParticularService for T
+ | ^^^^^^^^^^^^^^^^^ ^
+LL | where
+LL | T: Service<Req, Response = Res>,
+ | -------------- unsatisfied trait bound introduced here
+note: required for `ALayer<_>` to implement `ParticularServiceLayer<_>`
+ --> $DIR/track-obligations.rs:40:12
+ |
+LL | impl<T, C> ParticularServiceLayer<C> for T
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^ ^
+...
+LL | T::Service: ParticularService,
+ | ----------------- unsatisfied trait bound introduced here
+note: required by a bound in `check`
+ --> $DIR/track-obligations.rs:76:36
+ |
+LL | fn check<C>(_: C) where ALayer<C>: ParticularServiceLayer<C> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
+
+error: aborting due to 2 previous errors
+
+Some errors have detailed explanations: E0271, E0599.
+For more information about an error, try `rustc --explain E0271`.
diff --git a/src/test/ui/traits/trait-or-new-type-instead.rs b/tests/ui/traits/trait-or-new-type-instead.rs
index 572b03efc..572b03efc 100644
--- a/src/test/ui/traits/trait-or-new-type-instead.rs
+++ b/tests/ui/traits/trait-or-new-type-instead.rs
diff --git a/src/test/ui/traits/trait-or-new-type-instead.stderr b/tests/ui/traits/trait-or-new-type-instead.stderr
index 4726b0668..4726b0668 100644
--- a/src/test/ui/traits/trait-or-new-type-instead.stderr
+++ b/tests/ui/traits/trait-or-new-type-instead.stderr
diff --git a/src/test/ui/traits/trait-upcasting/basic.rs b/tests/ui/traits/trait-upcasting/basic.rs
index 570ec5160..570ec5160 100644
--- a/src/test/ui/traits/trait-upcasting/basic.rs
+++ b/tests/ui/traits/trait-upcasting/basic.rs
diff --git a/src/test/ui/traits/trait-upcasting/correct-supertrait-substitution.rs b/tests/ui/traits/trait-upcasting/correct-supertrait-substitution.rs
index eae5cf8d5..eae5cf8d5 100644
--- a/src/test/ui/traits/trait-upcasting/correct-supertrait-substitution.rs
+++ b/tests/ui/traits/trait-upcasting/correct-supertrait-substitution.rs
diff --git a/src/test/ui/traits/trait-upcasting/cyclic-trait-resolution.rs b/tests/ui/traits/trait-upcasting/cyclic-trait-resolution.rs
index 511e41562..511e41562 100644
--- a/src/test/ui/traits/trait-upcasting/cyclic-trait-resolution.rs
+++ b/tests/ui/traits/trait-upcasting/cyclic-trait-resolution.rs
diff --git a/src/test/ui/traits/trait-upcasting/cyclic-trait-resolution.stderr b/tests/ui/traits/trait-upcasting/cyclic-trait-resolution.stderr
index 15faab16a..15faab16a 100644
--- a/src/test/ui/traits/trait-upcasting/cyclic-trait-resolution.stderr
+++ b/tests/ui/traits/trait-upcasting/cyclic-trait-resolution.stderr
diff --git a/src/test/ui/traits/trait-upcasting/diamond.rs b/tests/ui/traits/trait-upcasting/diamond.rs
index a4f81c464..a4f81c464 100644
--- a/src/test/ui/traits/trait-upcasting/diamond.rs
+++ b/tests/ui/traits/trait-upcasting/diamond.rs
diff --git a/src/test/ui/traits/trait-upcasting/invalid-upcast.rs b/tests/ui/traits/trait-upcasting/invalid-upcast.rs
index e634bbd5a..e634bbd5a 100644
--- a/src/test/ui/traits/trait-upcasting/invalid-upcast.rs
+++ b/tests/ui/traits/trait-upcasting/invalid-upcast.rs
diff --git a/src/test/ui/traits/trait-upcasting/invalid-upcast.stderr b/tests/ui/traits/trait-upcasting/invalid-upcast.stderr
index 3aa21ee3d..3aa21ee3d 100644
--- a/src/test/ui/traits/trait-upcasting/invalid-upcast.stderr
+++ b/tests/ui/traits/trait-upcasting/invalid-upcast.stderr
diff --git a/src/test/ui/traits/trait-upcasting/issue-11515-upcast-fn_mut-fn.rs b/tests/ui/traits/trait-upcasting/issue-11515-upcast-fn_mut-fn.rs
index b672963ae..b672963ae 100644
--- a/src/test/ui/traits/trait-upcasting/issue-11515-upcast-fn_mut-fn.rs
+++ b/tests/ui/traits/trait-upcasting/issue-11515-upcast-fn_mut-fn.rs
diff --git a/src/test/ui/traits/trait-upcasting/lifetime.rs b/tests/ui/traits/trait-upcasting/lifetime.rs
index 9825158c2..9825158c2 100644
--- a/src/test/ui/traits/trait-upcasting/lifetime.rs
+++ b/tests/ui/traits/trait-upcasting/lifetime.rs
diff --git a/src/test/ui/traits/trait-upcasting/migrate-lint-deny.rs b/tests/ui/traits/trait-upcasting/migrate-lint-deny.rs
index d62418756..d62418756 100644
--- a/src/test/ui/traits/trait-upcasting/migrate-lint-deny.rs
+++ b/tests/ui/traits/trait-upcasting/migrate-lint-deny.rs
diff --git a/src/test/ui/traits/trait-upcasting/migrate-lint-deny.stderr b/tests/ui/traits/trait-upcasting/migrate-lint-deny.stderr
index 4533b1163..4533b1163 100644
--- a/src/test/ui/traits/trait-upcasting/migrate-lint-deny.stderr
+++ b/tests/ui/traits/trait-upcasting/migrate-lint-deny.stderr
diff --git a/src/test/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.rs b/tests/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.rs
index 2e53a00a9..2e53a00a9 100644
--- a/src/test/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.rs
+++ b/tests/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.rs
diff --git a/src/test/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.stderr b/tests/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.stderr
index 0ad18be03..0ad18be03 100644
--- a/src/test/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.stderr
+++ b/tests/ui/traits/trait-upcasting/multiple-occurrence-ambiguousity.stderr
diff --git a/src/test/ui/traits/trait-upcasting/replace-vptr.rs b/tests/ui/traits/trait-upcasting/replace-vptr.rs
index 9ccfc9306..9ccfc9306 100644
--- a/src/test/ui/traits/trait-upcasting/replace-vptr.rs
+++ b/tests/ui/traits/trait-upcasting/replace-vptr.rs
diff --git a/src/test/ui/traits/trait-upcasting/struct.rs b/tests/ui/traits/trait-upcasting/struct.rs
index a3e416969..a3e416969 100644
--- a/src/test/ui/traits/trait-upcasting/struct.rs
+++ b/tests/ui/traits/trait-upcasting/struct.rs
diff --git a/src/test/ui/traits/trait-upcasting/subtrait-method.rs b/tests/ui/traits/trait-upcasting/subtrait-method.rs
index 136d15af0..136d15af0 100644
--- a/src/test/ui/traits/trait-upcasting/subtrait-method.rs
+++ b/tests/ui/traits/trait-upcasting/subtrait-method.rs
diff --git a/src/test/ui/traits/trait-upcasting/subtrait-method.stderr b/tests/ui/traits/trait-upcasting/subtrait-method.stderr
index 918159e84..918159e84 100644
--- a/src/test/ui/traits/trait-upcasting/subtrait-method.stderr
+++ b/tests/ui/traits/trait-upcasting/subtrait-method.stderr
diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-1.rs b/tests/ui/traits/trait-upcasting/type-checking-test-1.rs
index 6bc9f4a75..6bc9f4a75 100644
--- a/src/test/ui/traits/trait-upcasting/type-checking-test-1.rs
+++ b/tests/ui/traits/trait-upcasting/type-checking-test-1.rs
diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-1.stderr b/tests/ui/traits/trait-upcasting/type-checking-test-1.stderr
index fe269d8e9..fe269d8e9 100644
--- a/src/test/ui/traits/trait-upcasting/type-checking-test-1.stderr
+++ b/tests/ui/traits/trait-upcasting/type-checking-test-1.stderr
diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-2.rs b/tests/ui/traits/trait-upcasting/type-checking-test-2.rs
index 36b11dffd..36b11dffd 100644
--- a/src/test/ui/traits/trait-upcasting/type-checking-test-2.rs
+++ b/tests/ui/traits/trait-upcasting/type-checking-test-2.rs
diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-2.stderr b/tests/ui/traits/trait-upcasting/type-checking-test-2.stderr
index ef007d5cb..ef007d5cb 100644
--- a/src/test/ui/traits/trait-upcasting/type-checking-test-2.stderr
+++ b/tests/ui/traits/trait-upcasting/type-checking-test-2.stderr
diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-3.polonius.stderr b/tests/ui/traits/trait-upcasting/type-checking-test-3.polonius.stderr
index e6cb6a753..e6cb6a753 100644
--- a/src/test/ui/traits/trait-upcasting/type-checking-test-3.polonius.stderr
+++ b/tests/ui/traits/trait-upcasting/type-checking-test-3.polonius.stderr
diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-3.rs b/tests/ui/traits/trait-upcasting/type-checking-test-3.rs
index b2db3a127..b2db3a127 100644
--- a/src/test/ui/traits/trait-upcasting/type-checking-test-3.rs
+++ b/tests/ui/traits/trait-upcasting/type-checking-test-3.rs
diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-3.stderr b/tests/ui/traits/trait-upcasting/type-checking-test-3.stderr
index e6cb6a753..e6cb6a753 100644
--- a/src/test/ui/traits/trait-upcasting/type-checking-test-3.stderr
+++ b/tests/ui/traits/trait-upcasting/type-checking-test-3.stderr
diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-4.polonius.stderr b/tests/ui/traits/trait-upcasting/type-checking-test-4.polonius.stderr
index 8d506e580..8d506e580 100644
--- a/src/test/ui/traits/trait-upcasting/type-checking-test-4.polonius.stderr
+++ b/tests/ui/traits/trait-upcasting/type-checking-test-4.polonius.stderr
diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-4.rs b/tests/ui/traits/trait-upcasting/type-checking-test-4.rs
index f40c48f0d..f40c48f0d 100644
--- a/src/test/ui/traits/trait-upcasting/type-checking-test-4.rs
+++ b/tests/ui/traits/trait-upcasting/type-checking-test-4.rs
diff --git a/src/test/ui/traits/trait-upcasting/type-checking-test-4.stderr b/tests/ui/traits/trait-upcasting/type-checking-test-4.stderr
index 8d506e580..8d506e580 100644
--- a/src/test/ui/traits/trait-upcasting/type-checking-test-4.stderr
+++ b/tests/ui/traits/trait-upcasting/type-checking-test-4.stderr
diff --git a/src/test/ui/traits/typeclasses-eq-example-static.rs b/tests/ui/traits/typeclasses-eq-example-static.rs
index f982ad6a0..f982ad6a0 100644
--- a/src/test/ui/traits/typeclasses-eq-example-static.rs
+++ b/tests/ui/traits/typeclasses-eq-example-static.rs
diff --git a/src/test/ui/traits/typeclasses-eq-example.rs b/tests/ui/traits/typeclasses-eq-example.rs
index 4400301e6..4400301e6 100644
--- a/src/test/ui/traits/typeclasses-eq-example.rs
+++ b/tests/ui/traits/typeclasses-eq-example.rs
diff --git a/src/test/ui/traits/ufcs-object.rs b/tests/ui/traits/ufcs-object.rs
index 700488c22..700488c22 100644
--- a/src/test/ui/traits/ufcs-object.rs
+++ b/tests/ui/traits/ufcs-object.rs
diff --git a/src/test/ui/traits/unspecified-self-in-trait-ref.rs b/tests/ui/traits/unspecified-self-in-trait-ref.rs
index 158b5a985..158b5a985 100644
--- a/src/test/ui/traits/unspecified-self-in-trait-ref.rs
+++ b/tests/ui/traits/unspecified-self-in-trait-ref.rs
diff --git a/src/test/ui/traits/unspecified-self-in-trait-ref.stderr b/tests/ui/traits/unspecified-self-in-trait-ref.stderr
index b5e8e8867..b5e8e8867 100644
--- a/src/test/ui/traits/unspecified-self-in-trait-ref.stderr
+++ b/tests/ui/traits/unspecified-self-in-trait-ref.stderr
diff --git a/src/test/ui/traits/use-before-def.rs b/tests/ui/traits/use-before-def.rs
index 1ee2b9419..1ee2b9419 100644
--- a/src/test/ui/traits/use-before-def.rs
+++ b/tests/ui/traits/use-before-def.rs
diff --git a/src/test/ui/traits/vtable-res-trait-param.rs b/tests/ui/traits/vtable-res-trait-param.rs
index 3d7c2eb08..3d7c2eb08 100644
--- a/src/test/ui/traits/vtable-res-trait-param.rs
+++ b/tests/ui/traits/vtable-res-trait-param.rs
diff --git a/src/test/ui/traits/vtable-res-trait-param.stderr b/tests/ui/traits/vtable-res-trait-param.stderr
index 2b3e3de9b..2b3e3de9b 100644
--- a/src/test/ui/traits/vtable-res-trait-param.stderr
+++ b/tests/ui/traits/vtable-res-trait-param.stderr
diff --git a/src/test/ui/traits/vtable/issue-91807.rs b/tests/ui/traits/vtable/issue-91807.rs
index f435ff09d..f435ff09d 100644
--- a/src/test/ui/traits/vtable/issue-91807.rs
+++ b/tests/ui/traits/vtable/issue-91807.rs
diff --git a/src/test/ui/traits/vtable/issue-97381.rs b/tests/ui/traits/vtable/issue-97381.rs
index 393cf91ef..393cf91ef 100644
--- a/src/test/ui/traits/vtable/issue-97381.rs
+++ b/tests/ui/traits/vtable/issue-97381.rs
diff --git a/src/test/ui/traits/vtable/issue-97381.stderr b/tests/ui/traits/vtable/issue-97381.stderr
index c4f8294e2..c4f8294e2 100644
--- a/src/test/ui/traits/vtable/issue-97381.stderr
+++ b/tests/ui/traits/vtable/issue-97381.stderr
diff --git a/src/test/ui/traits/vtable/vtable-diamond.rs b/tests/ui/traits/vtable/vtable-diamond.rs
index dc3c17ac3..dc3c17ac3 100644
--- a/src/test/ui/traits/vtable/vtable-diamond.rs
+++ b/tests/ui/traits/vtable/vtable-diamond.rs
diff --git a/src/test/ui/traits/vtable/vtable-diamond.stderr b/tests/ui/traits/vtable/vtable-diamond.stderr
index f3718c5d8..f3718c5d8 100644
--- a/src/test/ui/traits/vtable/vtable-diamond.stderr
+++ b/tests/ui/traits/vtable/vtable-diamond.stderr
diff --git a/src/test/ui/traits/vtable/vtable-multi-level.rs b/tests/ui/traits/vtable/vtable-multi-level.rs
index ebd55bcf3..ebd55bcf3 100644
--- a/src/test/ui/traits/vtable/vtable-multi-level.rs
+++ b/tests/ui/traits/vtable/vtable-multi-level.rs
diff --git a/src/test/ui/traits/vtable/vtable-multi-level.stderr b/tests/ui/traits/vtable/vtable-multi-level.stderr
index c4389e23f..c4389e23f 100644
--- a/src/test/ui/traits/vtable/vtable-multi-level.stderr
+++ b/tests/ui/traits/vtable/vtable-multi-level.stderr
diff --git a/src/test/ui/traits/vtable/vtable-multiple.rs b/tests/ui/traits/vtable/vtable-multiple.rs
index 7a0111c5e..7a0111c5e 100644
--- a/src/test/ui/traits/vtable/vtable-multiple.rs
+++ b/tests/ui/traits/vtable/vtable-multiple.rs
diff --git a/src/test/ui/traits/vtable/vtable-multiple.stderr b/tests/ui/traits/vtable/vtable-multiple.stderr
index 0dcd84433..0dcd84433 100644
--- a/src/test/ui/traits/vtable/vtable-multiple.stderr
+++ b/tests/ui/traits/vtable/vtable-multiple.stderr
diff --git a/src/test/ui/traits/vtable/vtable-non-object-safe.rs b/tests/ui/traits/vtable/vtable-non-object-safe.rs
index 7661bb574..7661bb574 100644
--- a/src/test/ui/traits/vtable/vtable-non-object-safe.rs
+++ b/tests/ui/traits/vtable/vtable-non-object-safe.rs
diff --git a/src/test/ui/traits/vtable/vtable-non-object-safe.stderr b/tests/ui/traits/vtable/vtable-non-object-safe.stderr
index 9345c2711..9345c2711 100644
--- a/src/test/ui/traits/vtable/vtable-non-object-safe.stderr
+++ b/tests/ui/traits/vtable/vtable-non-object-safe.stderr
diff --git a/src/test/ui/traits/vtable/vtable-vacant.rs b/tests/ui/traits/vtable/vtable-vacant.rs
index a64796358..a64796358 100644
--- a/src/test/ui/traits/vtable/vtable-vacant.rs
+++ b/tests/ui/traits/vtable/vtable-vacant.rs
diff --git a/src/test/ui/traits/vtable/vtable-vacant.stderr b/tests/ui/traits/vtable/vtable-vacant.stderr
index 5346a7027..5346a7027 100644
--- a/src/test/ui/traits/vtable/vtable-vacant.stderr
+++ b/tests/ui/traits/vtable/vtable-vacant.stderr
diff --git a/src/test/ui/traits/wf-object/maybe-bound.rs b/tests/ui/traits/wf-object/maybe-bound.rs
index 17771e976..17771e976 100644
--- a/src/test/ui/traits/wf-object/maybe-bound.rs
+++ b/tests/ui/traits/wf-object/maybe-bound.rs
diff --git a/src/test/ui/traits/wf-object/maybe-bound.stderr b/tests/ui/traits/wf-object/maybe-bound.stderr
index 2fe3f0fc3..2fe3f0fc3 100644
--- a/src/test/ui/traits/wf-object/maybe-bound.stderr
+++ b/tests/ui/traits/wf-object/maybe-bound.stderr
diff --git a/src/test/ui/traits/wf-object/no-duplicates.rs b/tests/ui/traits/wf-object/no-duplicates.rs
index 678ede582..678ede582 100644
--- a/src/test/ui/traits/wf-object/no-duplicates.rs
+++ b/tests/ui/traits/wf-object/no-duplicates.rs
diff --git a/src/test/ui/traits/wf-object/no-duplicates.stderr b/tests/ui/traits/wf-object/no-duplicates.stderr
index 50dfcf956..50dfcf956 100644
--- a/src/test/ui/traits/wf-object/no-duplicates.stderr
+++ b/tests/ui/traits/wf-object/no-duplicates.stderr
diff --git a/src/test/ui/traits/wf-object/only-maybe-bound.rs b/tests/ui/traits/wf-object/only-maybe-bound.rs
index 3e6db3e99..3e6db3e99 100644
--- a/src/test/ui/traits/wf-object/only-maybe-bound.rs
+++ b/tests/ui/traits/wf-object/only-maybe-bound.rs
diff --git a/src/test/ui/traits/wf-object/only-maybe-bound.stderr b/tests/ui/traits/wf-object/only-maybe-bound.stderr
index cbc41feec..cbc41feec 100644
--- a/src/test/ui/traits/wf-object/only-maybe-bound.stderr
+++ b/tests/ui/traits/wf-object/only-maybe-bound.stderr
diff --git a/src/test/ui/traits/wf-object/reverse-order.rs b/tests/ui/traits/wf-object/reverse-order.rs
index 4f676cbe3..4f676cbe3 100644
--- a/src/test/ui/traits/wf-object/reverse-order.rs
+++ b/tests/ui/traits/wf-object/reverse-order.rs
diff --git a/src/test/ui/traits/where-clause-vs-impl.rs b/tests/ui/traits/where-clause-vs-impl.rs
index 7cfee27ef..7cfee27ef 100644
--- a/src/test/ui/traits/where-clause-vs-impl.rs
+++ b/tests/ui/traits/where-clause-vs-impl.rs
diff --git a/src/test/ui/traits/with-bounds-default.rs b/tests/ui/traits/with-bounds-default.rs
index 31f73d79c..31f73d79c 100644
--- a/src/test/ui/traits/with-bounds-default.rs
+++ b/tests/ui/traits/with-bounds-default.rs
diff --git a/src/test/ui/traits/with-dst.rs b/tests/ui/traits/with-dst.rs
index a3e3b31df..a3e3b31df 100644
--- a/src/test/ui/traits/with-dst.rs
+++ b/tests/ui/traits/with-dst.rs