From 9a39d7e441fb5f879a25d326d6f1546b34d4c531 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Wed, 11 Jan 2023 03:21:11 +0000 Subject: [PATCH] Note predicate span on ImplDerivedObligation --- .../src/traits/error_reporting/suggestions.rs | 28 ++++++++++++++++--- .../hr-associated-type-bound-2.stderr | 3 ++ .../associated-types/impl-wf-cycle-1.stderr | 3 ++ .../associated-types/impl-wf-cycle-2.stderr | 3 ++ tests/ui/associated-types/issue-44153.stderr | 2 ++ .../ui/associated-types/issue-65774-1.stderr | 4 ++- .../substs-ppaux.normal.stderr | 4 ++- .../substs-ppaux.verbose.stderr | 4 ++- ...ypeck-default-trait-impl-precedence.stderr | 4 ++- tests/ui/block-result/issue-22645.stderr | 4 ++- .../generic_const_exprs/issue-85848.stderr | 10 ++++--- .../ui/consts/const-blocks/trait-error.stderr | 2 +- tests/ui/derives/deriving-copyclone.stderr | 6 ++-- tests/ui/error-codes/E0275.stderr | 2 +- .../impl_bounds.stderr | 4 +-- .../issue-101020.stderr | 2 +- .../issue-62203-hrtb-ice.stderr | 3 ++ .../normalize-under-binder/issue-89118.stderr | 12 ++++++-- .../nested-return-type2-tait2.stderr | 4 ++- .../nested-return-type2-tait3.stderr | 4 ++- ...ction-mismatch-in-impl-where-clause.stderr | 2 +- tests/ui/inference/issue-80816.rs | 1 + tests/ui/inference/issue-80816.stderr | 8 ++++-- tests/ui/issues/issue-20413.stderr | 10 +++---- tests/ui/issues/issue-22872.stderr | 3 ++ tests/ui/issues/issue-23122-2.stderr | 4 ++- tests/ui/issues/issue-38821.stderr | 4 ++- tests/ui/issues/issue-39970.stderr | 3 ++ .../kindck/kindck-impl-type-params-2.stderr | 4 ++- .../ui/kindck/kindck-impl-type-params.stderr | 24 ++++++++++++---- .../kindck-inherited-copy-bound.curr.stderr | 4 ++- ...copy-bound.object_safe_for_dispatch.stderr | 4 ++- tests/ui/phantom-auto-trait.stderr | 4 +-- .../issue-104884-trait-impl-sugg-err.stderr | 2 +- .../feature-gate-do_not_recommend.stderr | 4 ++- .../specializing-constness-2.stderr | 4 ++- tests/ui/specialization/issue-38091-2.stderr | 3 ++ tests/ui/specialization/issue-39448.stderr | 7 ++++- .../ui/suggestions/derive-clone-for-eq.stderr | 4 ++- .../derive-macro-missing-bounds.stderr | 10 ++++--- tests/ui/suggestions/issue-96223.stderr | 5 +++- tests/ui/traits/cycle-cache-err-60010.stderr | 6 ++++ .../ui/traits/inductive-overflow/lifetime.rs | 1 + .../traits/inductive-overflow/lifetime.stderr | 8 ++++-- .../inductive-overflow/simultaneous.stderr | 4 ++- .../inductive-overflow/supertrait.stderr | 4 ++- tests/ui/traits/issue-18400.stderr | 4 ++- tests/ui/traits/issue-91594.stderr | 4 ++- .../negated-auto-traits-error.stderr | 4 ++- ...t-non-existing-fully-qualified-path.stderr | 3 ++ .../issue-90400-2.stderr | 4 ++- .../underconstrained_generic.stderr | 4 ++- 52 files changed, 200 insertions(+), 68 deletions(-) diff --git a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs index 43985495827..53769742c47 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -36,7 +36,7 @@ use rustc_middle::ty::{ TypeSuperFoldable, TypeVisitable, TypeckResults, }; use rustc_span::symbol::{sym, Ident, Symbol}; -use rustc_span::{BytePos, DesugaringKind, ExpnKind, Span, DUMMY_SP}; +use rustc_span::{BytePos, DesugaringKind, ExpnKind, MacroKind, Span, DUMMY_SP}; use rustc_target::spec::abi; use std::ops::Deref; @@ -2949,7 +2949,7 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { // FIXME: we should do something else so that it works even on crate foreign // auto traits. is_auto_trait = matches!(is_auto, hir::IsAuto::Yes); - err.span_note(ident.span, &msg) + err.span_note(ident.span, &msg); } Some(Node::Item(hir::Item { kind: hir::ItemKind::Impl(hir::Impl { of_trait, self_ty, .. }), @@ -2960,9 +2960,29 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { spans.push(trait_ref.path.span); } spans.push(self_ty.span); - err.span_note(spans, &msg) + let mut spans: MultiSpan = spans.into(); + if matches!( + self_ty.span.ctxt().outer_expn_data().kind, + ExpnKind::Macro(MacroKind::Derive, _) + ) || matches!( + of_trait.as_ref().map(|t| t.path.span.ctxt().outer_expn_data().kind), + Some(ExpnKind::Macro(MacroKind::Derive, _)) + ) { + spans.push_span_label( + data.span, + "unsatisfied trait bound introduced in this `derive` macro", + ); + } else if !data.span.is_dummy() && !data.span.overlaps(self_ty.span) { + spans.push_span_label( + data.span, + "unsatisfied trait bound introduced here", + ); + } + err.span_note(spans, &msg); + } + _ => { + err.note(&msg); } - _ => err.note(&msg), }; if let Some(file) = file { diff --git a/tests/ui/associated-types/hr-associated-type-bound-2.stderr b/tests/ui/associated-types/hr-associated-type-bound-2.stderr index a85edd7a08d..749986f09c6 100644 --- a/tests/ui/associated-types/hr-associated-type-bound-2.stderr +++ b/tests/ui/associated-types/hr-associated-type-bound-2.stderr @@ -10,6 +10,9 @@ note: required for `u32` to implement `for<'b> X<'b>` | LL | impl X<'_> for u32 | ^^^^^ ^^^ +LL | where +LL | for<'b> >::U: Clone, + | ----- unsatisfied trait bound introduced here = note: 128 redundant requirements hidden = note: required for `u32` to implement `for<'b> X<'b>` diff --git a/tests/ui/associated-types/impl-wf-cycle-1.stderr b/tests/ui/associated-types/impl-wf-cycle-1.stderr index 6661347e4f8..206060f1980 100644 --- a/tests/ui/associated-types/impl-wf-cycle-1.stderr +++ b/tests/ui/associated-types/impl-wf-cycle-1.stderr @@ -9,6 +9,9 @@ note: required for `(T,)` to implement `Grault` | LL | impl Grault for (T,) | ^^^^^^ ^^^^ +... +LL | Self::A: Baz, + | --- unsatisfied trait bound introduced here = note: 1 redundant requirement hidden = note: required for `(T,)` to implement `Grault` diff --git a/tests/ui/associated-types/impl-wf-cycle-2.stderr b/tests/ui/associated-types/impl-wf-cycle-2.stderr index ec4ffe27c5f..771ba751e8c 100644 --- a/tests/ui/associated-types/impl-wf-cycle-2.stderr +++ b/tests/ui/associated-types/impl-wf-cycle-2.stderr @@ -9,6 +9,9 @@ note: required for `(T,)` to implement `Grault` | LL | impl Grault for (T,) | ^^^^^^ ^^^^ +... +LL | Self::A: Copy, + | ---- unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/associated-types/issue-44153.stderr b/tests/ui/associated-types/issue-44153.stderr index 9c92f19d8bf..8bddcd95568 100644 --- a/tests/ui/associated-types/issue-44153.stderr +++ b/tests/ui/associated-types/issue-44153.stderr @@ -14,6 +14,8 @@ note: required for `()` to implement `Visit` | LL | impl<'a> Visit for () where | ^^^^^ ^^ +LL | (): Array, + | -------------- unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/associated-types/issue-65774-1.stderr b/tests/ui/associated-types/issue-65774-1.stderr index 3b294d65d56..91b557555d5 100644 --- a/tests/ui/associated-types/issue-65774-1.stderr +++ b/tests/ui/associated-types/issue-65774-1.stderr @@ -22,7 +22,9 @@ note: required for `&mut T` to implement `MyDisplay` --> $DIR/issue-65774-1.rs:5:24 | LL | impl<'a, T: MyDisplay> MyDisplay for &'a mut T { } - | ^^^^^^^^^ ^^^^^^^^^ + | --------- ^^^^^^^^^ ^^^^^^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `&mut T` to the object type `dyn MyDisplay` error: aborting due to 2 previous errors diff --git a/tests/ui/associated-types/substs-ppaux.normal.stderr b/tests/ui/associated-types/substs-ppaux.normal.stderr index 3f180cf4f1f..eadaa35b65e 100644 --- a/tests/ui/associated-types/substs-ppaux.normal.stderr +++ b/tests/ui/associated-types/substs-ppaux.normal.stderr @@ -81,7 +81,9 @@ note: required for `str` to implement `Foo<'_, '_, u8>` --> $DIR/substs-ppaux.rs:11:17 | LL | impl<'a,'b,T,S> Foo<'a, 'b, S> for T {} - | ^^^^^^^^^^^^^^ ^ + | - ^^^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here error: aborting due to 5 previous errors diff --git a/tests/ui/associated-types/substs-ppaux.verbose.stderr b/tests/ui/associated-types/substs-ppaux.verbose.stderr index 16dd29de2c5..2077543ce30 100644 --- a/tests/ui/associated-types/substs-ppaux.verbose.stderr +++ b/tests/ui/associated-types/substs-ppaux.verbose.stderr @@ -81,7 +81,9 @@ note: required for `str` to implement `Foo<'_#0r, '_#1r, u8>` --> $DIR/substs-ppaux.rs:11:17 | LL | impl<'a,'b,T,S> Foo<'a, 'b, S> for T {} - | ^^^^^^^^^^^^^^ ^ + | - ^^^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here error: aborting due to 5 previous errors diff --git a/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr b/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr index ce7095664c1..9aae9013d1b 100644 --- a/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr +++ b/tests/ui/auto-traits/typeck-default-trait-impl-precedence.stderr @@ -9,7 +9,9 @@ note: required for `&'static u32` to implement `Defaulted` --> $DIR/typeck-default-trait-impl-precedence.rs:10:19 | LL | impl<'a,T:Signed> Defaulted for &'a T { } - | ^^^^^^^^^ ^^^^^ + | ------ ^^^^^^^^^ ^^^^^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `is_defaulted` --> $DIR/typeck-default-trait-impl-precedence.rs:12:19 | diff --git a/tests/ui/block-result/issue-22645.stderr b/tests/ui/block-result/issue-22645.stderr index 28debd60a99..24341c0f58a 100644 --- a/tests/ui/block-result/issue-22645.stderr +++ b/tests/ui/block-result/issue-22645.stderr @@ -9,7 +9,9 @@ note: required for `Bob` to implement `Add<{integer}>` --> $DIR/issue-22645.rs:8:19 | LL | impl Add for Bob { - | ^^^^^^^^^ ^^^ + | ------ ^^^^^^^^^ ^^^ + | | + | unsatisfied trait bound introduced here error[E0308]: mismatched types --> $DIR/issue-22645.rs:15:3 diff --git a/tests/ui/const-generics/generic_const_exprs/issue-85848.stderr b/tests/ui/const-generics/generic_const_exprs/issue-85848.stderr index 09bcb0860b7..e50ac671eca 100644 --- a/tests/ui/const-generics/generic_const_exprs/issue-85848.stderr +++ b/tests/ui/const-generics/generic_const_exprs/issue-85848.stderr @@ -11,12 +11,12 @@ note: required for `&C` to implement `Contains<(), true>` --> $DIR/issue-85848.rs:21:12 | LL | impl Contains() }> for U where T: _Contains {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ ------------ unsatisfied trait bound introduced here note: required for `&C` to implement `Delegates<()>` --> $DIR/issue-85848.rs:12:12 | LL | impl Delegates for T where T: Contains {} - | ^^^^^^^^^^^^ ^ + | ^^^^^^^^^^^^ ^ ----------------- unsatisfied trait bound introduced here note: required by a bound in `writes_to_specific_path` --> $DIR/issue-85848.rs:30:31 | @@ -36,12 +36,14 @@ note: required for `&C` to implement `Contains<(), true>` --> $DIR/issue-85848.rs:21:12 | LL | impl Contains() }> for U where T: _Contains {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | ^^^^^^^^^^^^----------------------^ ^ + | | + | unsatisfied trait bound introduced here note: required for `&C` to implement `Delegates<()>` --> $DIR/issue-85848.rs:12:12 | LL | impl Delegates for T where T: Contains {} - | ^^^^^^^^^^^^ ^ + | ^^^^^^^^^^^^ ^ ----------------- unsatisfied trait bound introduced here note: required by a bound in `writes_to_specific_path` --> $DIR/issue-85848.rs:30:31 | diff --git a/tests/ui/consts/const-blocks/trait-error.stderr b/tests/ui/consts/const-blocks/trait-error.stderr index b11dd4b8087..06fa4b0b1f3 100644 --- a/tests/ui/consts/const-blocks/trait-error.stderr +++ b/tests/ui/consts/const-blocks/trait-error.stderr @@ -8,7 +8,7 @@ note: required for `Foo` to implement `Copy` --> $DIR/trait-error.rs:1:10 | LL | #[derive(Copy, Clone)] - | ^^^^ + | ^^^^ unsatisfied trait bound introduced in this `derive` macro = note: the `Copy` trait is required because this value will be copied for each element of the array = help: consider creating a new `const` item and initializing it with the result of the function call to be used in the repeat position, like `const VAL: Type = const_fn();` and `let x = [VAL; 42];` = help: create an inline `const` block, see RFC #2920 for more information diff --git a/tests/ui/derives/deriving-copyclone.stderr b/tests/ui/derives/deriving-copyclone.stderr index 80e2dd7fede..9c4ca01ff37 100644 --- a/tests/ui/derives/deriving-copyclone.stderr +++ b/tests/ui/derives/deriving-copyclone.stderr @@ -10,7 +10,7 @@ note: required for `B` to implement `Copy` --> $DIR/deriving-copyclone.rs:9:10 | LL | #[derive(Copy, Clone)] - | ^^^^ + | ^^^^ unsatisfied trait bound introduced in this `derive` macro note: required by a bound in `is_copy` --> $DIR/deriving-copyclone.rs:18:15 | @@ -34,7 +34,7 @@ note: required for `B` to implement `Clone` --> $DIR/deriving-copyclone.rs:9:16 | LL | #[derive(Copy, Clone)] - | ^^^^^ + | ^^^^^ unsatisfied trait bound introduced in this `derive` macro note: required by a bound in `is_clone` --> $DIR/deriving-copyclone.rs:19:16 | @@ -58,7 +58,7 @@ note: required for `B` to implement `Copy` --> $DIR/deriving-copyclone.rs:9:10 | LL | #[derive(Copy, Clone)] - | ^^^^ + | ^^^^ unsatisfied trait bound introduced in this `derive` macro note: required by a bound in `is_copy` --> $DIR/deriving-copyclone.rs:18:15 | diff --git a/tests/ui/error-codes/E0275.stderr b/tests/ui/error-codes/E0275.stderr index 451a683ac8a..cf9a7f69bfb 100644 --- a/tests/ui/error-codes/E0275.stderr +++ b/tests/ui/error-codes/E0275.stderr @@ -9,7 +9,7 @@ note: required for `Bar $DIR/E0275.rs:6:9 | LL | impl Foo for T where Bar: Foo {} - | ^^^ ^ + | ^^^ ^ --- unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/error-codes/E0275/E0275.long-type-hash.txt' = note: 127 redundant requirements hidden = note: required for `Bar` to implement `Foo` diff --git a/tests/ui/generic-associated-types/impl_bounds.stderr b/tests/ui/generic-associated-types/impl_bounds.stderr index 3456b345cc2..261070d1db4 100644 --- a/tests/ui/generic-associated-types/impl_bounds.stderr +++ b/tests/ui/generic-associated-types/impl_bounds.stderr @@ -31,7 +31,7 @@ note: required for `Fooy` to implement `Copy` --> $DIR/impl_bounds.rs:10:10 | LL | #[derive(Copy, Clone)] - | ^^^^ + | ^^^^ unsatisfied trait bound introduced in this `derive` macro note: the requirement `Fooy: Copy` appears on the `impl`'s associated type `C` but not on the corresponding trait's associated type --> $DIR/impl_bounds.rs:6:10 | @@ -56,7 +56,7 @@ note: required for `Fooy` to implement `Copy` --> $DIR/impl_bounds.rs:10:10 | LL | #[derive(Copy, Clone)] - | ^^^^ + | ^^^^ unsatisfied trait bound introduced in this `derive` macro note: the requirement `Fooy: Copy` appears on the `impl`'s method `d` but not on the corresponding trait's method --> $DIR/impl_bounds.rs:7:8 | diff --git a/tests/ui/generic-associated-types/issue-101020.stderr b/tests/ui/generic-associated-types/issue-101020.stderr index 422ac548427..1f9273a8c4a 100644 --- a/tests/ui/generic-associated-types/issue-101020.stderr +++ b/tests/ui/generic-associated-types/issue-101020.stderr @@ -8,7 +8,7 @@ note: required for `&'a mut ()` to implement `for<'a> FuncInput<'a, &'a mut ()>` --> $DIR/issue-101020.rs:27:20 | LL | impl<'a, T, F: 'a> FuncInput<'a, F> for T where F: Foo {} - | ^^^^^^^^^^^^^^^^ ^ + | ^^^^^^^^^^^^^^^^ ^ ------ unsatisfied trait bound introduced here note: required by a bound in `LendingIterator::consume` --> $DIR/issue-101020.rs:9:33 | diff --git a/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr b/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr index fdd192f4313..381865db07d 100644 --- a/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr +++ b/tests/ui/higher-rank-trait-bounds/issue-62203-hrtb-ice.stderr @@ -49,6 +49,9 @@ note: required for `L<[closure@$DIR/issue-62203-hrtb-ice.rs:42:16: 42:19]>` to i | LL | impl<'a, A, T> T0<'a, A> for L | ^^^^^^^^^ ^^^^ +LL | where +LL | T: FnMut(A) -> Unit3, + | ----- unsatisfied trait bound introduced here note: required by a bound in `T1::m` --> $DIR/issue-62203-hrtb-ice.rs:27:12 | diff --git a/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr index 14fe1803b73..62d0128fd85 100644 --- a/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr +++ b/tests/ui/higher-rank-trait-bounds/normalize-under-binder/issue-89118.stderr @@ -8,7 +8,9 @@ note: required for `Ctx<()>` to implement `for<'a> BufferUdpStateContext<&'a ()> --> $DIR/issue-89118.rs:5:23 | LL | impl BufferUdpStateContext for C {} - | ^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | --------- ^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `StackContext` --> $DIR/issue-89118.rs:9:14 | @@ -28,7 +30,9 @@ note: required for `Ctx<()>` to implement `for<'a> BufferUdpStateContext<&'a ()> --> $DIR/issue-89118.rs:5:23 | LL | impl BufferUdpStateContext for C {} - | ^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | --------- ^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `EthernetWorker` --> $DIR/issue-89118.rs:28:14 | @@ -48,7 +52,9 @@ note: required for `Ctx<()>` to implement `for<'a> BufferUdpStateContext<&'a ()> --> $DIR/issue-89118.rs:5:23 | LL | impl BufferUdpStateContext for C {} - | ^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | --------- ^^^^^^^^^^^^^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `StackContext` --> $DIR/issue-89118.rs:9:14 | diff --git a/tests/ui/impl-trait/nested-return-type2-tait2.stderr b/tests/ui/impl-trait/nested-return-type2-tait2.stderr index 348c737b0b1..b85bb5efd10 100644 --- a/tests/ui/impl-trait/nested-return-type2-tait2.stderr +++ b/tests/ui/impl-trait/nested-return-type2-tait2.stderr @@ -9,7 +9,9 @@ note: required for `[closure@$DIR/nested-return-type2-tait2.rs:27:5: 27:7]` to i --> $DIR/nested-return-type2-tait2.rs:14:31 | LL | impl R> Trait for F { - | ^^^^^ ^ + | --- ^^^^^ ^ + | | + | unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/impl-trait/nested-return-type2-tait3.stderr b/tests/ui/impl-trait/nested-return-type2-tait3.stderr index 6ac67141557..19fd3c134ac 100644 --- a/tests/ui/impl-trait/nested-return-type2-tait3.stderr +++ b/tests/ui/impl-trait/nested-return-type2-tait3.stderr @@ -9,7 +9,9 @@ note: required for `[closure@$DIR/nested-return-type2-tait3.rs:26:5: 26:7]` to i --> $DIR/nested-return-type2-tait3.rs:14:31 | LL | impl R> Trait for F { - | ^^^^^ ^ + | --- ^^^^^ ^ + | | + | unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr b/tests/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr index cf2998bbf40..a4ff510477a 100644 --- a/tests/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr +++ b/tests/ui/impl-trait/projection-mismatch-in-impl-where-clause.stderr @@ -13,7 +13,7 @@ note: required for `()` to implement `Test` --> $DIR/projection-mismatch-in-impl-where-clause.rs:11:9 | LL | impl Test for T where T: Super {} - | ^^^^ ^ + | ^^^^ ^ ---------- unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/inference/issue-80816.rs b/tests/ui/inference/issue-80816.rs index ead320a4fe4..4d319b44987 100644 --- a/tests/ui/inference/issue-80816.rs +++ b/tests/ui/inference/issue-80816.rs @@ -30,6 +30,7 @@ pub trait Access { } impl, P: Deref> Access for P { //~^ NOTE: required for `Arc>>` to implement `Access<_>` + //~| NOTE unsatisfied trait bound introduced here type Guard = A::Guard; } impl Access for ArcSwapAny { diff --git a/tests/ui/inference/issue-80816.stderr b/tests/ui/inference/issue-80816.stderr index bd833340df4..80c0c8abec6 100644 --- a/tests/ui/inference/issue-80816.stderr +++ b/tests/ui/inference/issue-80816.stderr @@ -1,11 +1,11 @@ error[E0283]: type annotations needed - --> $DIR/issue-80816.rs:49:38 + --> $DIR/issue-80816.rs:50:38 | LL | let guard: Guard> = s.load(); | ^^^^ | note: multiple `impl`s satisfying `ArcSwapAny>: Access<_>` found - --> $DIR/issue-80816.rs:35:1 + --> $DIR/issue-80816.rs:36:1 | LL | impl Access for ArcSwapAny { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -16,7 +16,9 @@ note: required for `Arc>>` to implement `Access<_>` --> $DIR/issue-80816.rs:31:45 | LL | impl, P: Deref> Access for P { - | ^^^^^^^^^ ^ + | --------- ^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here help: try using a fully qualified path to specify the expected types | LL | let guard: Guard> = >> as Access>::load(&s); diff --git a/tests/ui/issues/issue-20413.stderr b/tests/ui/issues/issue-20413.stderr index 78df445972c..202e8463145 100644 --- a/tests/ui/issues/issue-20413.stderr +++ b/tests/ui/issues/issue-20413.stderr @@ -18,7 +18,7 @@ note: required for `NoData $DIR/issue-20413.rs:9:9 | LL | impl Foo for T where NoData: Foo { - | ^^^ ^ + | ^^^ ^ --- unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/issues/issue-20413/issue-20413.long-type-hash.txt' = note: 127 redundant requirements hidden = note: required for `NoData` to implement `Foo` @@ -34,13 +34,13 @@ note: required for `AlmostNoData $DIR/issue-20413.rs:28:9 | LL | impl Bar for T where EvenLessData: Baz { - | ^^^ ^ + | ^^^ ^ --- unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/issues/issue-20413/issue-20413.long-type-hash.txt' note: required for `EvenLessData>>>>>>` to implement `Baz` --> $DIR/issue-20413.rs:35:9 | LL | impl Baz for T where AlmostNoData: Bar { - | ^^^ ^ + | ^^^ ^ --- unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/issues/issue-20413/issue-20413.long-type-hash.txt' = note: 126 redundant requirements hidden = note: required for `EvenLessData` to implement `Baz` @@ -56,13 +56,13 @@ note: required for `EvenLessData $DIR/issue-20413.rs:35:9 | LL | impl Baz for T where AlmostNoData: Bar { - | ^^^ ^ + | ^^^ ^ --- unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/issues/issue-20413/issue-20413.long-type-hash.txt' note: required for `AlmostNoData>>>>>>` to implement `Bar` --> $DIR/issue-20413.rs:28:9 | LL | impl Bar for T where EvenLessData: Baz { - | ^^^ ^ + | ^^^ ^ --- unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/issues/issue-20413/issue-20413.long-type-hash.txt' = note: 126 redundant requirements hidden = note: required for `AlmostNoData` to implement `Bar` diff --git a/tests/ui/issues/issue-22872.stderr b/tests/ui/issues/issue-22872.stderr index 7382d40c010..9510197197a 100644 --- a/tests/ui/issues/issue-22872.stderr +++ b/tests/ui/issues/issue-22872.stderr @@ -10,6 +10,9 @@ note: required for `Wrapper

` to implement `for<'b> Wrap<'b>` | LL | impl<'b, P> Wrap<'b> for Wrapper

| ^^^^^^^^ ^^^^^^^^^^ +LL | where P: Process<'b>, +LL |

>::Item: Iterator { + | -------- unsatisfied trait bound introduced here = note: required for the cast from `Wrapper

` to the object type `dyn for<'b> Wrap<'b>` help: consider further restricting the associated type | diff --git a/tests/ui/issues/issue-23122-2.stderr b/tests/ui/issues/issue-23122-2.stderr index 1f50b06a0e4..06e5b711a82 100644 --- a/tests/ui/issues/issue-23122-2.stderr +++ b/tests/ui/issues/issue-23122-2.stderr @@ -9,7 +9,9 @@ note: required for `GetNext<<<<<<<... as Next>::Next as Next>::Next as Next>::Ne --> $DIR/issue-23122-2.rs:10:15 | LL | impl Next for GetNext { - | ^^^^ ^^^^^^^^^^ + | - ^^^^ ^^^^^^^^^^ + | | + | unsatisfied trait bound introduced here = note: the full type name has been written to '$TEST_BUILD_DIR/issues/issue-23122-2/issue-23122-2.long-type-hash.txt' error: aborting due to previous error diff --git a/tests/ui/issues/issue-38821.stderr b/tests/ui/issues/issue-38821.stderr index 9abd2436b8a..a52a9c138f1 100644 --- a/tests/ui/issues/issue-38821.stderr +++ b/tests/ui/issues/issue-38821.stderr @@ -8,7 +8,9 @@ note: required for `::SqlType` to implement `IntoNullable` --> $DIR/issue-38821.rs:9:18 | LL | impl IntoNullable for T { - | ^^^^^^^^^^^^ ^ + | ------- ^^^^^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info) help: consider further restricting the associated type | diff --git a/tests/ui/issues/issue-39970.stderr b/tests/ui/issues/issue-39970.stderr index 774575d1d01..0cabdf7f234 100644 --- a/tests/ui/issues/issue-39970.stderr +++ b/tests/ui/issues/issue-39970.stderr @@ -14,6 +14,9 @@ note: required for `()` to implement `Visit` | LL | impl Visit for () where | ^^^^^ ^^ +LL | //(): for<'a> Array<'a, Element=&'a ()>, // No ICE +LL | (): for<'a> Array<'a, Element=()>, // ICE + | ---------- unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/kindck/kindck-impl-type-params-2.stderr b/tests/ui/kindck/kindck-impl-type-params-2.stderr index 930d96375bf..1d26ae51f44 100644 --- a/tests/ui/kindck/kindck-impl-type-params-2.stderr +++ b/tests/ui/kindck/kindck-impl-type-params-2.stderr @@ -10,7 +10,9 @@ note: required for `Box<{integer}>` to implement `Foo` --> $DIR/kindck-impl-type-params-2.rs:6:14 | LL | impl Foo for T { - | ^^^ ^ + | ---- ^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `take_param` --> $DIR/kindck-impl-type-params-2.rs:9:17 | diff --git a/tests/ui/kindck/kindck-impl-type-params.stderr b/tests/ui/kindck/kindck-impl-type-params.stderr index 8dbe0c38c1e..6fd1fc3f7a1 100644 --- a/tests/ui/kindck/kindck-impl-type-params.stderr +++ b/tests/ui/kindck/kindck-impl-type-params.stderr @@ -8,7 +8,9 @@ note: required for `S` to implement `Gettable` --> $DIR/kindck-impl-type-params.rs:12:32 | LL | impl Gettable for S {} - | ^^^^^^^^^^^ ^^^^ + | ---- ^^^^^^^^^^^ ^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `S` to the object type `dyn Gettable` help: consider restricting type parameter `T` | @@ -25,7 +27,9 @@ note: required for `S` to implement `Gettable` --> $DIR/kindck-impl-type-params.rs:12:32 | LL | impl Gettable for S {} - | ^^^^^^^^^^^ ^^^^ + | ---- ^^^^^^^^^^^ ^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `S` to the object type `dyn Gettable` help: consider restricting type parameter `T` | @@ -42,7 +46,9 @@ note: required for `S` to implement `Gettable` --> $DIR/kindck-impl-type-params.rs:12:32 | LL | impl Gettable for S {} - | ^^^^^^^^^^^ ^^^^ + | ---- ^^^^^^^^^^^ ^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `S` to the object type `dyn Gettable` help: consider restricting type parameter `T` | @@ -59,7 +65,9 @@ note: required for `S` to implement `Gettable` --> $DIR/kindck-impl-type-params.rs:12:32 | LL | impl Gettable for S {} - | ^^^^^^^^^^^ ^^^^ + | ---- ^^^^^^^^^^^ ^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `S` to the object type `dyn Gettable` help: consider restricting type parameter `T` | @@ -77,7 +85,9 @@ note: required for `S` to implement `Gettable` --> $DIR/kindck-impl-type-params.rs:12:32 | LL | impl Gettable for S {} - | ^^^^^^^^^^^ ^^^^ + | ---- ^^^^^^^^^^^ ^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `S` to the object type `dyn Gettable` error[E0277]: the trait bound `Foo: Copy` is not satisfied @@ -91,7 +101,9 @@ note: required for `S` to implement `Gettable` --> $DIR/kindck-impl-type-params.rs:12:32 | LL | impl Gettable for S {} - | ^^^^^^^^^^^ ^^^^ + | ---- ^^^^^^^^^^^ ^^^^ + | | + | unsatisfied trait bound introduced here = note: required for the cast from `S` to the object type `dyn Gettable` help: consider annotating `Foo` with `#[derive(Copy)]` | diff --git a/tests/ui/kindck/kindck-inherited-copy-bound.curr.stderr b/tests/ui/kindck/kindck-inherited-copy-bound.curr.stderr index e81d2441e6e..8d45748a6c4 100644 --- a/tests/ui/kindck/kindck-inherited-copy-bound.curr.stderr +++ b/tests/ui/kindck/kindck-inherited-copy-bound.curr.stderr @@ -10,7 +10,9 @@ note: required for `Box<{integer}>` to implement `Foo` --> $DIR/kindck-inherited-copy-bound.rs:14:14 | LL | impl Foo for T { - | ^^^ ^ + | ---- ^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `take_param` --> $DIR/kindck-inherited-copy-bound.rs:17:17 | diff --git a/tests/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr b/tests/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr index 2380533b9c3..2fbb5a98a8d 100644 --- a/tests/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr +++ b/tests/ui/kindck/kindck-inherited-copy-bound.object_safe_for_dispatch.stderr @@ -10,7 +10,9 @@ note: required for `Box<{integer}>` to implement `Foo` --> $DIR/kindck-inherited-copy-bound.rs:14:14 | LL | impl Foo for T { - | ^^^ ^ + | ---- ^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `take_param` --> $DIR/kindck-inherited-copy-bound.rs:17:17 | diff --git a/tests/ui/phantom-auto-trait.stderr b/tests/ui/phantom-auto-trait.stderr index 015c8fa4cd1..4769d53eb35 100644 --- a/tests/ui/phantom-auto-trait.stderr +++ b/tests/ui/phantom-auto-trait.stderr @@ -10,7 +10,7 @@ note: required for `&T` to implement `Zen` --> $DIR/phantom-auto-trait.rs:10:24 | LL | unsafe impl<'a, T: 'a> Zen for &'a T where T: Sync {} - | ^^^ ^^^^^ + | ^^^ ^^^^^ ---- unsatisfied trait bound introduced here = note: required because it appears within the type `PhantomData<&T>` note: required because it appears within the type `Guard<'_, T>` --> $DIR/phantom-auto-trait.rs:12:8 @@ -39,7 +39,7 @@ note: required for `&T` to implement `Zen` --> $DIR/phantom-auto-trait.rs:10:24 | LL | unsafe impl<'a, T: 'a> Zen for &'a T where T: Sync {} - | ^^^ ^^^^^ + | ^^^ ^^^^^ ---- unsatisfied trait bound introduced here = note: required because it appears within the type `PhantomData<&T>` note: required because it appears within the type `Guard<'_, T>` --> $DIR/phantom-auto-trait.rs:12:8 diff --git a/tests/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr b/tests/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr index 14e5df21ef6..3b2a5e70188 100644 --- a/tests/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr +++ b/tests/ui/proc-macro/issue-104884-trait-impl-sugg-err.stderr @@ -29,7 +29,7 @@ note: required for `PriorityQueue` to implement `PartialOrd` --> $DIR/issue-104884-trait-impl-sugg-err.rs:13:10 | LL | #[derive(PartialOrd, AddImpl)] - | ^^^^^^^^^^ + | ^^^^^^^^^^ unsatisfied trait bound introduced in this `derive` macro note: required by a bound in `Ord` --> $SRC_DIR/core/src/cmp.rs:LL:COL = note: this error originates in the derive macro `AddImpl` which comes from the expansion of the derive macro `PartialOrd` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr b/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr index 2749add82ac..a3e559054f9 100644 --- a/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr +++ b/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr @@ -11,7 +11,9 @@ note: required for `u8` to implement `Bar` --> $DIR/feature-gate-do_not_recommend.rs:13:14 | LL | impl Bar for T { - | ^^^ ^ + | --- ^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `stuff` --> $DIR/feature-gate-do_not_recommend.rs:16:13 | diff --git a/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr b/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr index c554671e18d..8923416f4c7 100644 --- a/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr +++ b/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr @@ -8,7 +8,9 @@ note: required for `T` to implement `~const A` --> $DIR/specializing-constness-2.rs:20:37 | LL | impl const A for T { - | ^ ^ + | ---------- ^ ^ + | | + | unsatisfied trait bound introduced here help: consider further restricting this bound | LL | const fn generic() { diff --git a/tests/ui/specialization/issue-38091-2.stderr b/tests/ui/specialization/issue-38091-2.stderr index 117fb10bb7e..5a05f9c270a 100644 --- a/tests/ui/specialization/issue-38091-2.stderr +++ b/tests/ui/specialization/issue-38091-2.stderr @@ -15,6 +15,9 @@ note: required for `i32` to implement `Iterate<'_>` | LL | impl<'a, T> Iterate<'a> for T | ^^^^^^^^^^^ ^ +LL | where +LL | T: Check, + | ----- unsatisfied trait bound introduced here error: aborting due to previous error; 1 warning emitted diff --git a/tests/ui/specialization/issue-39448.stderr b/tests/ui/specialization/issue-39448.stderr index 60157d9a3e1..9ce51d1136d 100644 --- a/tests/ui/specialization/issue-39448.stderr +++ b/tests/ui/specialization/issue-39448.stderr @@ -18,12 +18,17 @@ note: required for `T` to implement `FromA` --> $DIR/issue-39448.rs:24:29 | LL | impl> FromA for U { - | ^^^^^^^^ ^ + | -------- ^^^^^^^^ ^ + | | + | unsatisfied trait bound introduced here note: required for `U` to implement `ToA` --> $DIR/issue-39448.rs:34:12 | LL | impl ToA for T | ^^^^^^ ^ +LL | where +LL | U: FromA, + | -------- unsatisfied trait bound introduced here error: aborting due to previous error; 1 warning emitted diff --git a/tests/ui/suggestions/derive-clone-for-eq.stderr b/tests/ui/suggestions/derive-clone-for-eq.stderr index 0a18b770405..9d843c2514b 100644 --- a/tests/ui/suggestions/derive-clone-for-eq.stderr +++ b/tests/ui/suggestions/derive-clone-for-eq.stderr @@ -8,7 +8,9 @@ note: required for `Struct` to implement `PartialEq` --> $DIR/derive-clone-for-eq.rs:9:19 | LL | impl PartialEq for Struct - | ^^^^^^^^^^^^ ^^^^^^^^^ + | ----- ^^^^^^^^^^^^ ^^^^^^^^^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `Eq` --> $SRC_DIR/core/src/cmp.rs:LL:COL = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/tests/ui/suggestions/derive-macro-missing-bounds.stderr b/tests/ui/suggestions/derive-macro-missing-bounds.stderr index b9f7739654a..79036279df9 100644 --- a/tests/ui/suggestions/derive-macro-missing-bounds.stderr +++ b/tests/ui/suggestions/derive-macro-missing-bounds.stderr @@ -30,7 +30,9 @@ note: required for `c::Inner` to implement `Debug` --> $DIR/derive-macro-missing-bounds.rs:34:28 | LL | impl Debug for Inner { - | ^^^^^ ^^^^^^^^ + | ----- ^^^^^ ^^^^^^^^ + | | + | unsatisfied trait bound introduced here = note: 1 redundant requirement hidden = note: required for `&c::Inner` to implement `Debug` = note: required for the cast from `&c::Inner` to the object type `dyn Debug` @@ -52,7 +54,7 @@ note: required for `d::Inner` to implement `Debug` --> $DIR/derive-macro-missing-bounds.rs:49:13 | LL | impl Debug for Inner where T: Debug, T: Trait { - | ^^^^^ ^^^^^^^^ + | ^^^^^ ^^^^^^^^ ----- unsatisfied trait bound introduced here = note: 1 redundant requirement hidden = note: required for `&d::Inner` to implement `Debug` = note: required for the cast from `&d::Inner` to the object type `dyn Debug` @@ -74,7 +76,7 @@ note: required for `e::Inner` to implement `Debug` --> $DIR/derive-macro-missing-bounds.rs:64:13 | LL | impl Debug for Inner where T: Debug + Trait { - | ^^^^^ ^^^^^^^^ + | ^^^^^ ^^^^^^^^ ----- unsatisfied trait bound introduced here = note: 1 redundant requirement hidden = note: required for `&e::Inner` to implement `Debug` = note: required for the cast from `&e::Inner` to the object type `dyn Debug` @@ -96,7 +98,7 @@ note: required for `f::Inner` to implement `Debug` --> $DIR/derive-macro-missing-bounds.rs:79:20 | LL | impl Debug for Inner where T: Trait { - | ^^^^^ ^^^^^^^^ + | ^^^^^ ^^^^^^^^ ----- unsatisfied trait bound introduced here = note: 1 redundant requirement hidden = note: required for `&f::Inner` to implement `Debug` = note: required for the cast from `&f::Inner` to the object type `dyn Debug` diff --git a/tests/ui/suggestions/issue-96223.stderr b/tests/ui/suggestions/issue-96223.stderr index 72a9a739a64..d4e9433dfda 100644 --- a/tests/ui/suggestions/issue-96223.stderr +++ b/tests/ui/suggestions/issue-96223.stderr @@ -11,12 +11,15 @@ note: required for `Baz>` to implement `for<'de> Foo<'de>` --> $DIR/issue-96223.rs:16:14 | LL | impl<'de, T> Foo<'de> for Baz where T: Foo<'de> {} - | ^^^^^^^^ ^^^^^^ + | ^^^^^^^^ ^^^^^^ -------- unsatisfied trait bound introduced here note: required for `Empty` to implement `Dummy` --> $DIR/issue-96223.rs:20:9 | LL | impl Dummy for Empty | ^^^^^^^^ ^^^^^ +... +LL | for<'de> Baz<>::Inner>: Foo<'de>, + | -------- unsatisfied trait bound introduced here note: required by a bound in `icey_bounds` --> $DIR/issue-96223.rs:45:19 | diff --git a/tests/ui/traits/cycle-cache-err-60010.stderr b/tests/ui/traits/cycle-cache-err-60010.stderr index 2478eb35422..eeee997608e 100644 --- a/tests/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 SourceDatabase for T | ^^^^^^^^^^^^^^ ^ +LL | where +LL | T: RefUnwindSafe, + | ------------- unsatisfied trait bound introduced here note: required for `ParseQuery` to implement `Query` --> $DIR/cycle-cache-err-60010.rs:37:10 | LL | impl Query for ParseQuery | ^^^^^^^^^ ^^^^^^^^^^ +LL | where +LL | DB: SourceDatabase, + | -------------- unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/traits/inductive-overflow/lifetime.rs b/tests/ui/traits/inductive-overflow/lifetime.rs index 004e477374a..bf536d21cf9 100644 --- a/tests/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::P); impl NotAuto for Box {} //~ NOTE: required +//~^ NOTE unsatisfied trait bound introduced here impl NotAuto for X where T::P: NotAuto {} impl<'a> NotAuto for C<'a> {} diff --git a/tests/ui/traits/inductive-overflow/lifetime.stderr b/tests/ui/traits/inductive-overflow/lifetime.stderr index b72d53bddbc..357e59991a3 100644 --- a/tests/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>: NotAuto` - --> $DIR/lifetime.rs:28:5 + --> $DIR/lifetime.rs:29:5 | LL | is_send::>>(); | ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -8,11 +8,13 @@ note: required for `Box>>` to implement `NotAuto` --> $DIR/lifetime.rs:18:18 | LL | impl NotAuto for Box {} - | ^^^^^^^ ^^^^^^ + | ------- ^^^^^^^ ^^^^^^ + | | + | unsatisfied trait bound introduced here = note: 3 redundant requirements hidden = note: required for `X>` 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() {} | ^^^^^^^ required by this bound in `is_send` diff --git a/tests/ui/traits/inductive-overflow/simultaneous.stderr b/tests/ui/traits/inductive-overflow/simultaneous.stderr index 09930e60efe..e3b4ec07d23 100644 --- a/tests/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 Combo for T {} - | ^^^^^ ^ + | ---------- ^^^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `is_ee` --> $DIR/simultaneous.rs:13:13 | diff --git a/tests/ui/traits/inductive-overflow/supertrait.stderr b/tests/ui/traits/inductive-overflow/supertrait.stderr index 4b862cf79ce..b537ecf1721 100644 --- a/tests/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 Magic for T {} - | ^^^^^ ^ + | ----- ^^^^^ ^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `copy` --> $DIR/supertrait.rs:7:12 | diff --git a/tests/ui/traits/issue-18400.stderr b/tests/ui/traits/issue-18400.stderr index 4394e6f7e05..edaf08f490f 100644 --- a/tests/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/tests/ui/traits/issue-91594.stderr b/tests/ui/traits/issue-91594.stderr index 9f9acf85113..6b314fa586d 100644 --- a/tests/ui/traits/issue-91594.stderr +++ b/tests/ui/traits/issue-91594.stderr @@ -9,7 +9,9 @@ note: required for `Foo` to implement `Component` --> $DIR/issue-91594.rs:13:27 | LL | impl> Component for Foo { - | ^^^^^^^^^^^^ ^^^ + | ---------------- ^^^^^^^^^^^^ ^^^ + | | + | unsatisfied trait bound introduced here error: aborting due to previous error diff --git a/tests/ui/traits/negative-impls/negated-auto-traits-error.stderr b/tests/ui/traits/negative-impls/negated-auto-traits-error.stderr index 30cc76b2e1a..ce690b749f5 100644 --- a/tests/ui/traits/negative-impls/negated-auto-traits-error.stderr +++ b/tests/ui/traits/negative-impls/negated-auto-traits-error.stderr @@ -113,7 +113,9 @@ note: required for `Outer2` to implement `Sync` --> $DIR/negated-auto-traits-error.rs:14:22 | LL | unsafe impl Sync for Outer2 {} - | ^^^^ ^^^^^^^^^ + | ---- ^^^^ ^^^^^^^^^ + | | + | unsatisfied trait bound introduced here note: required by a bound in `is_sync` --> $DIR/negated-auto-traits-error.rs:17:15 | diff --git a/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr b/tests/ui/traits/not-suggest-non-existing-fully-qualified-path.stderr index 53178328c56..92d9d32cf9c 100644 --- a/tests/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` to implement `V<_>` | LL | impl V for A | ^^^^ ^^^^ +LL | where +LL | T: I, + | ---- unsatisfied trait bound introduced here help: try using a fully qualified path to specify the expected types | LL | as V>::method(a); diff --git a/tests/ui/type-alias-impl-trait/issue-90400-2.stderr b/tests/ui/type-alias-impl-trait/issue-90400-2.stderr index 50b2dc0495d..0c45046f5f5 100644 --- a/tests/ui/type-alias-impl-trait/issue-90400-2.stderr +++ b/tests/ui/type-alias-impl-trait/issue-90400-2.stderr @@ -8,7 +8,9 @@ note: required for `MyBaz` to implement `Baz` --> $DIR/issue-90400-2.rs:30:14 | LL | impl Baz for MyBaz { - | ^^^ ^^^^^^^^ + | --- ^^^ ^^^^^^^^ + | | + | unsatisfied trait bound introduced here help: consider restricting type parameter `B` | LL | type FooFn = impl Baz; diff --git a/tests/ui/type-alias-impl-trait/underconstrained_generic.stderr b/tests/ui/type-alias-impl-trait/underconstrained_generic.stderr index 95fb6f6a55a..103636b6cdd 100644 --- a/tests/ui/type-alias-impl-trait/underconstrained_generic.stderr +++ b/tests/ui/type-alias-impl-trait/underconstrained_generic.stderr @@ -8,7 +8,9 @@ note: required for `()` to implement `ProofForConversion` --> $DIR/underconstrained_generic.rs:13:16 | LL | impl ProofForConversion for () { - | ^^^^^^^^^^^^^^^^^^^^^ ^^ + | ----- ^^^^^^^^^^^^^^^^^^^^^ ^^ + | | + | unsatisfied trait bound introduced here help: consider restricting type parameter `T` | LL | type Converter = impl ProofForConversion;