Auto merge of #145640 - estebank:point-at-impl-e0277, r=nnethercote
When a trait isn't implemented, but another similar impl is found, point at it
```
error[E0277]: the trait bound `u32: Trait` is not satisfied
--> $DIR/trait_objects_fail.rs:26:9
|
LL | foo(&10_u32);
| ^^^^^^^ the trait `Trait` is not implemented for `u32`
|
help: the trait `Trait<12>` is not implemented for `u32`
but trait `Trait<2>` is implemented for it
--> $DIR/trait_objects_fail.rs:7:1
|
LL | impl Trait<2> for u32 {}
| ^^^^^^^^^^^^^^^^^^^^^
= note: required for the cast from `&u32` to `&dyn Trait`
```
Pointing at the `impl` definition that *could* apply given a different self type is *particularly* useful when it has a blanket self type, as it might not be obvious and is not trivially greppable:
```
error[E0277]: the trait bound `RawImpl<_>: Raw<_>` is not satisfied
--> $DIR/issue-62742.rs:4:5
|
LL | WrongImpl::foo(0i32);
| ^^^^^^^^^ unsatisfied trait bound
|
help: the trait `Raw<_>` is not implemented for `RawImpl<_>`
but trait `Raw<[_]>` is implemented for it
--> $DIR/issue-62742.rs:29:1
|
LL | impl<T> Raw<[T]> for RawImpl<T> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `SafeImpl`
--> $DIR/issue-62742.rs:33:35
|
LL | pub struct SafeImpl<T: ?Sized, A: Raw<T>>(PhantomData<(A, T)>);
| ^^^^^^ required by this bound in `SafeImpl`
```
diff --git a/compiler/rustc_errors/src/emitter.rs b/compiler/rustc_errors/src/emitter.rs
index 9e32a85..25b6d99 100644
--- a/compiler/rustc_errors/src/emitter.rs
+++ b/compiler/rustc_errors/src/emitter.rs
@@ -1523,16 +1523,17 @@ fn emit_messages_default_inner(
label_width += 2;
}
let mut line = 0;
+ let mut pad = false;
for (text, style) in msgs.iter() {
let text =
self.translator.translate_message(text, args).map_err(Report::new).unwrap();
// Account for newlines to align output to its label.
- for text in normalize_whitespace(&text).lines() {
+ for text in normalize_whitespace(&text).split('\n') {
buffer.append(
line,
&format!(
"{}{}",
- if line == 0 { String::new() } else { " ".repeat(label_width) },
+ if pad { " ".repeat(label_width) } else { String::new() },
text
),
match style {
@@ -1541,7 +1542,9 @@ fn emit_messages_default_inner(
},
);
line += 1;
+ pad = true;
}
+ pad = false;
// We add lines above, but if the last line has no explicit newline (which would
// yield an empty line), then we revert one line up to continue with the next
// styled text chunk on the same line as the last one from the prior one. Otherwise
diff --git a/compiler/rustc_trait_selection/src/error_reporting/traits/fulfillment_errors.rs b/compiler/rustc_trait_selection/src/error_reporting/traits/fulfillment_errors.rs
index 373819d..03d4397 100644
--- a/compiler/rustc_trait_selection/src/error_reporting/traits/fulfillment_errors.rs
+++ b/compiler/rustc_trait_selection/src/error_reporting/traits/fulfillment_errors.rs
@@ -1,3 +1,4 @@
+// ignore-tidy-filelength
use core::ops::ControlFlow;
use std::borrow::Cow;
use std::path::PathBuf;
@@ -1906,13 +1907,13 @@ pub(super) fn report_similar_impl_candidates(
// ignore `do_not_recommend` items
.filter(|def_id| !self.tcx.do_not_recommend_impl(*def_id))
// Ignore automatically derived impls and `!Trait` impls.
- .map(|def_id| self.tcx.impl_trait_header(def_id))
- .filter_map(|header| {
- (header.polarity != ty::ImplPolarity::Negative
+ .map(|def_id| (self.tcx.impl_trait_header(def_id), def_id))
+ .filter_map(|(header, def_id)| {
+ (header.polarity == ty::ImplPolarity::Positive
|| self.tcx.is_automatically_derived(def_id))
- .then(|| header.trait_ref.instantiate_identity())
+ .then(|| (header.trait_ref.instantiate_identity(), def_id))
})
- .filter(|trait_ref| {
+ .filter(|(trait_ref, _)| {
let self_ty = trait_ref.self_ty();
// Avoid mentioning type parameters.
if let ty::Param(_) = self_ty.kind() {
@@ -1944,7 +1945,7 @@ pub(super) fn report_similar_impl_candidates(
})
.collect();
- impl_candidates.sort_by_key(|tr| tr.to_string());
+ impl_candidates.sort_by_key(|(tr, _)| tr.to_string());
impl_candidates.dedup();
impl_candidates
};
@@ -1972,7 +1973,7 @@ pub(super) fn report_similar_impl_candidates(
let candidates = if impl_candidates.is_empty() {
alternative_candidates(trait_def_id)
} else {
- impl_candidates.into_iter().map(|cand| cand.trait_ref).collect()
+ impl_candidates.into_iter().map(|cand| (cand.trait_ref, cand.impl_def_id)).collect()
};
let mut span: MultiSpan = self.tcx.def_span(trait_def_id).into();
span.push_span_label(self.tcx.def_span(trait_def_id), "this is the required trait");
@@ -2004,7 +2005,7 @@ pub(super) fn report_similar_impl_candidates(
self.tcx.def_span(found_type),
"this type doesn't implement the required trait",
);
- for trait_ref in candidates {
+ for (trait_ref, _) in candidates {
if let ty::Adt(def, _) = trait_ref.self_ty().peel_refs().kind()
&& let candidate_def_id = def.did()
&& let Some(name) = self.tcx.opt_item_name(candidate_def_id)
@@ -2191,7 +2192,7 @@ pub(super) fn report_similar_impl_candidates(
msg.extend(types.1.0);
msg.push(StringPart::normal("`"));
}
- err.highlighted_help(msg);
+ err.highlighted_span_help(self.tcx.def_span(single.impl_def_id), msg);
if let [TypeError::Sorts(exp_found)] = &terrs[..] {
let exp_found = self.resolve_vars_if_possible(*exp_found);
@@ -2217,12 +2218,12 @@ pub(super) fn report_similar_impl_candidates(
}
let other = if other { "other " } else { "" };
- let report = |mut candidates: Vec<TraitRef<'tcx>>, err: &mut Diag<'_>| {
- candidates.retain(|tr| !tr.references_error());
+ let report = |mut candidates: Vec<(TraitRef<'tcx>, DefId)>, err: &mut Diag<'_>| {
+ candidates.retain(|(tr, _)| !tr.references_error());
if candidates.is_empty() {
return false;
}
- if let &[cand] = &candidates[..] {
+ if let &[(cand, def_id)] = &candidates[..] {
if self.tcx.is_diagnostic_item(sym::FromResidual, cand.def_id)
&& !self.tcx.features().enabled(sym::try_trait_v2)
{
@@ -2238,56 +2239,87 @@ pub(super) fn report_similar_impl_candidates(
};
let trait_ = self.tcx.short_string(cand.print_trait_sugared(), err.long_ty_path());
let self_ty = self.tcx.short_string(cand.self_ty(), err.long_ty_path());
- err.highlighted_help(vec![
- StringPart::normal(format!("the trait `{trait_}` ",)),
- StringPart::highlighted("is"),
- StringPart::normal(desc),
- StringPart::highlighted(self_ty),
- StringPart::normal("`"),
- StringPart::normal(mention_castable),
- ]);
+ err.highlighted_span_help(
+ self.tcx.def_span(def_id),
+ vec![
+ StringPart::normal(format!("the trait `{trait_}` ",)),
+ StringPart::highlighted("is"),
+ StringPart::normal(desc),
+ StringPart::highlighted(self_ty),
+ StringPart::normal("`"),
+ StringPart::normal(mention_castable),
+ ],
+ );
return true;
}
- let trait_ref = TraitRef::identity(self.tcx, candidates[0].def_id);
+ let trait_ref = TraitRef::identity(self.tcx, candidates[0].0.def_id);
// Check if the trait is the same in all cases. If so, we'll only show the type.
let mut traits: Vec<_> =
- candidates.iter().map(|c| c.print_only_trait_path().to_string()).collect();
+ candidates.iter().map(|(c, _)| c.print_only_trait_path().to_string()).collect();
traits.sort();
traits.dedup();
// FIXME: this could use a better heuristic, like just checking
// that args[1..] is the same.
let all_traits_equal = traits.len() == 1;
- let candidates: Vec<String> = candidates
- .into_iter()
- .map(|c| {
- if all_traits_equal {
- format!("\n {}", self.tcx.short_string(c.self_ty(), err.long_ty_path()))
- } else {
- format!(
- "\n `{}` implements `{}`",
- self.tcx.short_string(c.self_ty(), err.long_ty_path()),
- self.tcx.short_string(c.print_only_trait_path(), err.long_ty_path()),
- )
- }
- })
- .collect();
-
let end = if candidates.len() <= 9 || self.tcx.sess.opts.verbose {
candidates.len()
} else {
8
};
- err.help(format!(
- "the following {other}types implement trait `{}`:{}{}",
- trait_ref.print_trait_sugared(),
- candidates[..end].join(""),
- if candidates.len() > 9 && !self.tcx.sess.opts.verbose {
- format!("\nand {} others", candidates.len() - 8)
- } else {
- String::new()
+ if candidates.len() < 5 {
+ let spans: Vec<_> =
+ candidates.iter().map(|(_, def_id)| self.tcx.def_span(def_id)).collect();
+ let mut span: MultiSpan = spans.into();
+ for (c, def_id) in &candidates {
+ let msg = if all_traits_equal {
+ format!("`{}`", self.tcx.short_string(c.self_ty(), err.long_ty_path()))
+ } else {
+ format!(
+ "`{}` implements `{}`",
+ self.tcx.short_string(c.self_ty(), err.long_ty_path()),
+ self.tcx.short_string(c.print_only_trait_path(), err.long_ty_path()),
+ )
+ };
+ span.push_span_label(self.tcx.def_span(def_id), msg);
}
- ));
+ err.span_help(
+ span,
+ format!(
+ "the following {other}types implement trait `{}`",
+ trait_ref.print_trait_sugared(),
+ ),
+ );
+ } else {
+ let candidate_names: Vec<String> = candidates
+ .iter()
+ .map(|(c, _)| {
+ if all_traits_equal {
+ format!(
+ "\n {}",
+ self.tcx.short_string(c.self_ty(), err.long_ty_path())
+ )
+ } else {
+ format!(
+ "\n `{}` implements `{}`",
+ self.tcx.short_string(c.self_ty(), err.long_ty_path()),
+ self.tcx
+ .short_string(c.print_only_trait_path(), err.long_ty_path()),
+ )
+ }
+ })
+ .collect();
+ err.help(format!(
+ "the following {other}types implement trait `{}`:{}{}",
+ trait_ref.print_trait_sugared(),
+ candidate_names[..end].join(""),
+ if candidates.len() > 9 && !self.tcx.sess.opts.verbose {
+ format!("\nand {} others", candidates.len() - 8)
+ } else {
+ String::new()
+ }
+ ));
+ }
true
};
@@ -2349,7 +2381,7 @@ pub(super) fn report_similar_impl_candidates(
(cand.similarity, len, cand.trait_ref.to_string())
});
let mut impl_candidates: Vec<_> =
- impl_candidates.into_iter().map(|cand| cand.trait_ref).collect();
+ impl_candidates.into_iter().map(|cand| (cand.trait_ref, cand.impl_def_id)).collect();
impl_candidates.dedup();
report(impl_candidates, err)
diff --git a/tests/ui-fulldeps/rustc-dev-remap.only-remap.stderr b/tests/ui-fulldeps/rustc-dev-remap.only-remap.stderr
index b8de929..15e2cf6 100644
--- a/tests/ui-fulldeps/rustc-dev-remap.only-remap.stderr
+++ b/tests/ui-fulldeps/rustc-dev-remap.only-remap.stderr
@@ -9,9 +9,13 @@
|
LL | struct NotAValidResultType;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
- = help: the following other types implement trait `VisitorResult`:
- ()
- ControlFlow<T>
+help: the following other types implement trait `VisitorResult`
+ --> /rustc-dev/xyz/compiler/rustc_ast_ir/src/visit.rs:LL:COL
+ |
+ = note: `()`
+ ::: /rustc-dev/xyz/compiler/rustc_ast_ir/src/visit.rs:LL:COL
+ |
+ = note: `ControlFlow<T>`
note: required by a bound in `rustc_ast::visit::Visitor::Result`
--> /rustc-dev/xyz/compiler/rustc_ast/src/visit.rs:LL:COL
= note: this error originates in the macro `common_visitor_and_walkers` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/tests/ui-fulldeps/rustc-dev-remap.remap-unremap.stderr b/tests/ui-fulldeps/rustc-dev-remap.remap-unremap.stderr
index 29b43c8..b927697 100644
--- a/tests/ui-fulldeps/rustc-dev-remap.remap-unremap.stderr
+++ b/tests/ui-fulldeps/rustc-dev-remap.remap-unremap.stderr
@@ -9,9 +9,14 @@
|
LL | struct NotAValidResultType;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
- = help: the following other types implement trait `VisitorResult`:
- ()
- ControlFlow<T>
+help: the following other types implement trait `VisitorResult`
+ --> $COMPILER_DIR_REAL/rustc_ast_ir/src/visit.rs:LL:COL
+ |
+LL | impl VisitorResult for () {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^ `()`
+...
+LL | impl<T> VisitorResult for ControlFlow<T> {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `ControlFlow<T>`
note: required by a bound in `rustc_ast::visit::Visitor::Result`
--> $COMPILER_DIR_REAL/rustc_ast/src/visit.rs:LL:COL
|
diff --git a/tests/ui/allocator/not-an-allocator.rs b/tests/ui/allocator/not-an-allocator.rs
index 4a538d4..d5062c9 100644
--- a/tests/ui/allocator/not-an-allocator.rs
+++ b/tests/ui/allocator/not-an-allocator.rs
@@ -1,3 +1,6 @@
+//@ revisions: u w
+//@[u] only-unix
+//@[w] only-windows
#[global_allocator]
static A: usize = 0;
//~^ ERROR E0277
diff --git a/tests/ui/allocator/not-an-allocator.stderr b/tests/ui/allocator/not-an-allocator.u.stderr
similarity index 71%
rename from tests/ui/allocator/not-an-allocator.stderr
rename to tests/ui/allocator/not-an-allocator.u.stderr
index f33a698..f7400d1 100644
--- a/tests/ui/allocator/not-an-allocator.stderr
+++ b/tests/ui/allocator/not-an-allocator.u.stderr
@@ -1,44 +1,48 @@
error[E0277]: the trait bound `usize: GlobalAlloc` is not satisfied
- --> $DIR/not-an-allocator.rs:2:11
+ --> $DIR/not-an-allocator.rs:5:11
|
LL | #[global_allocator]
| ------------------- in this attribute macro expansion
LL | static A: usize = 0;
| ^^^^^ the trait `GlobalAlloc` is not implemented for `usize`
|
- = help: the trait `GlobalAlloc` is implemented for `System`
+help: the trait `GlobalAlloc` is implemented for `System`
+ --> $SRC_DIR/std/src/sys/alloc/unix.rs:LL:COL
error[E0277]: the trait bound `usize: GlobalAlloc` is not satisfied
- --> $DIR/not-an-allocator.rs:2:11
+ --> $DIR/not-an-allocator.rs:5:11
|
LL | #[global_allocator]
| ------------------- in this attribute macro expansion
LL | static A: usize = 0;
| ^^^^^ the trait `GlobalAlloc` is not implemented for `usize`
|
- = help: the trait `GlobalAlloc` is implemented for `System`
+help: the trait `GlobalAlloc` is implemented for `System`
+ --> $SRC_DIR/std/src/sys/alloc/unix.rs:LL:COL
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error[E0277]: the trait bound `usize: GlobalAlloc` is not satisfied
- --> $DIR/not-an-allocator.rs:2:11
+ --> $DIR/not-an-allocator.rs:5:11
|
LL | #[global_allocator]
| ------------------- in this attribute macro expansion
LL | static A: usize = 0;
| ^^^^^ the trait `GlobalAlloc` is not implemented for `usize`
|
- = help: the trait `GlobalAlloc` is implemented for `System`
+help: the trait `GlobalAlloc` is implemented for `System`
+ --> $SRC_DIR/std/src/sys/alloc/unix.rs:LL:COL
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error[E0277]: the trait bound `usize: GlobalAlloc` is not satisfied
- --> $DIR/not-an-allocator.rs:2:11
+ --> $DIR/not-an-allocator.rs:5:11
|
LL | #[global_allocator]
| ------------------- in this attribute macro expansion
LL | static A: usize = 0;
| ^^^^^ the trait `GlobalAlloc` is not implemented for `usize`
|
- = help: the trait `GlobalAlloc` is implemented for `System`
+help: the trait `GlobalAlloc` is implemented for `System`
+ --> $SRC_DIR/std/src/sys/alloc/unix.rs:LL:COL
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error: aborting due to 4 previous errors
diff --git a/tests/ui/allocator/not-an-allocator.stderr b/tests/ui/allocator/not-an-allocator.w.stderr
similarity index 70%
copy from tests/ui/allocator/not-an-allocator.stderr
copy to tests/ui/allocator/not-an-allocator.w.stderr
index f33a698..d86aadc 100644
--- a/tests/ui/allocator/not-an-allocator.stderr
+++ b/tests/ui/allocator/not-an-allocator.w.stderr
@@ -1,44 +1,48 @@
error[E0277]: the trait bound `usize: GlobalAlloc` is not satisfied
- --> $DIR/not-an-allocator.rs:2:11
+ --> $DIR/not-an-allocator.rs:5:11
|
LL | #[global_allocator]
| ------------------- in this attribute macro expansion
LL | static A: usize = 0;
| ^^^^^ the trait `GlobalAlloc` is not implemented for `usize`
|
- = help: the trait `GlobalAlloc` is implemented for `System`
+help: the trait `GlobalAlloc` is implemented for `System`
+ --> $SRC_DIR/std/src/sys/alloc/windows.rs:LL:COL
error[E0277]: the trait bound `usize: GlobalAlloc` is not satisfied
- --> $DIR/not-an-allocator.rs:2:11
+ --> $DIR/not-an-allocator.rs:5:11
|
LL | #[global_allocator]
| ------------------- in this attribute macro expansion
LL | static A: usize = 0;
| ^^^^^ the trait `GlobalAlloc` is not implemented for `usize`
|
- = help: the trait `GlobalAlloc` is implemented for `System`
+help: the trait `GlobalAlloc` is implemented for `System`
+ --> $SRC_DIR/std/src/sys/alloc/windows.rs:LL:COL
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error[E0277]: the trait bound `usize: GlobalAlloc` is not satisfied
- --> $DIR/not-an-allocator.rs:2:11
+ --> $DIR/not-an-allocator.rs:5:11
|
LL | #[global_allocator]
| ------------------- in this attribute macro expansion
LL | static A: usize = 0;
| ^^^^^ the trait `GlobalAlloc` is not implemented for `usize`
|
- = help: the trait `GlobalAlloc` is implemented for `System`
+help: the trait `GlobalAlloc` is implemented for `System`
+ --> $SRC_DIR/std/src/sys/alloc/windows.rs:LL:COL
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error[E0277]: the trait bound `usize: GlobalAlloc` is not satisfied
- --> $DIR/not-an-allocator.rs:2:11
+ --> $DIR/not-an-allocator.rs:5:11
|
LL | #[global_allocator]
| ------------------- in this attribute macro expansion
LL | static A: usize = 0;
| ^^^^^ the trait `GlobalAlloc` is not implemented for `usize`
|
- = help: the trait `GlobalAlloc` is implemented for `System`
+help: the trait `GlobalAlloc` is implemented for `System`
+ --> $SRC_DIR/std/src/sys/alloc/windows.rs:LL:COL
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error: aborting due to 4 previous errors
diff --git a/tests/ui/associated-types/associated-types-path-2.stderr b/tests/ui/associated-types/associated-types-path-2.stderr
index 46e34b0..a2b6c81 100644
--- a/tests/ui/associated-types/associated-types-path-2.stderr
+++ b/tests/ui/associated-types/associated-types-path-2.stderr
@@ -25,7 +25,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Foo` is implemented for `i32`
+help: the trait `Foo` is implemented for `i32`
+ --> $DIR/associated-types-path-2.rs:11:1
+ |
+LL | impl Foo for i32 {
+ | ^^^^^^^^^^^^^^^^
note: required by a bound in `f1`
--> $DIR/associated-types-path-2.rs:15:14
|
@@ -38,7 +42,11 @@
LL | f1(2u32, 4u32);
| ^^^^ the trait `Foo` is not implemented for `u32`
|
- = help: the trait `Foo` is implemented for `i32`
+help: the trait `Foo` is implemented for `i32`
+ --> $DIR/associated-types-path-2.rs:11:1
+ |
+LL | impl Foo for i32 {
+ | ^^^^^^^^^^^^^^^^
error[E0277]: the trait bound `u32: Foo` is not satisfied
--> $DIR/associated-types-path-2.rs:37:8
@@ -48,7 +56,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Foo` is implemented for `i32`
+help: the trait `Foo` is implemented for `i32`
+ --> $DIR/associated-types-path-2.rs:11:1
+ |
+LL | impl Foo for i32 {
+ | ^^^^^^^^^^^^^^^^
note: required by a bound in `f1`
--> $DIR/associated-types-path-2.rs:15:14
|
@@ -61,7 +73,11 @@
LL | f1(2u32, 4i32);
| ^^^^ the trait `Foo` is not implemented for `u32`
|
- = help: the trait `Foo` is implemented for `i32`
+help: the trait `Foo` is implemented for `i32`
+ --> $DIR/associated-types-path-2.rs:11:1
+ |
+LL | impl Foo for i32 {
+ | ^^^^^^^^^^^^^^^^
error[E0308]: mismatched types
--> $DIR/associated-types-path-2.rs:43:18
diff --git a/tests/ui/associated-types/hr-associated-type-bound-1.stderr b/tests/ui/associated-types/hr-associated-type-bound-1.stderr
index 5b00e71..3815a5b 100644
--- a/tests/ui/associated-types/hr-associated-type-bound-1.stderr
+++ b/tests/ui/associated-types/hr-associated-type-bound-1.stderr
@@ -4,7 +4,8 @@
LL | type U = str;
| ^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `X`
--> $DIR/hr-associated-type-bound-1.rs:3:33
|
@@ -20,7 +21,8 @@
LL | 1i32.f("abc");
| ^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `X::f`
--> $DIR/hr-associated-type-bound-1.rs:3:33
|
diff --git a/tests/ui/associated-types/hr-associated-type-bound-param-1.stderr b/tests/ui/associated-types/hr-associated-type-bound-param-1.stderr
index 07d3afb..c4398e2 100644
--- a/tests/ui/associated-types/hr-associated-type-bound-param-1.stderr
+++ b/tests/ui/associated-types/hr-associated-type-bound-param-1.stderr
@@ -4,7 +4,8 @@
LL | type V = str;
| ^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `Y`
--> $DIR/hr-associated-type-bound-param-1.rs:4:36
|
@@ -20,7 +21,8 @@
LL | 1u8.g("abc");
| ^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `Y::g`
--> $DIR/hr-associated-type-bound-param-1.rs:4:36
|
diff --git a/tests/ui/associated-types/hr-associated-type-bound-param-2.stderr b/tests/ui/associated-types/hr-associated-type-bound-param-2.stderr
index 8997832..ef402b7 100644
--- a/tests/ui/associated-types/hr-associated-type-bound-param-2.stderr
+++ b/tests/ui/associated-types/hr-associated-type-bound-param-2.stderr
@@ -4,7 +4,8 @@
LL | T: Z<'a, u16>,
| ^^^^^^^^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `Z`
--> $DIR/hr-associated-type-bound-param-2.rs:6:35
|
@@ -20,7 +21,8 @@
LL | type W = str;
| ^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `Z`
--> $DIR/hr-associated-type-bound-param-2.rs:6:35
|
@@ -36,7 +38,8 @@
LL | T: Z<'a, u16>,
| ^^^^^^^^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `Z`
--> $DIR/hr-associated-type-bound-param-2.rs:6:35
|
@@ -53,7 +56,8 @@
LL | <T::W>::clone(x);
| ^^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `Z::W`
--> $DIR/hr-associated-type-bound-param-2.rs:6:35
|
@@ -69,7 +73,8 @@
LL | <T::W>::clone(x);
| ^^^^^^^^^^^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `Z`
--> $DIR/hr-associated-type-bound-param-2.rs:6:35
|
@@ -85,7 +90,8 @@
LL | <T::W>::clone(x);
| ^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `Z`
--> $DIR/hr-associated-type-bound-param-2.rs:6:35
|
@@ -101,7 +107,8 @@
LL | 1u16.h("abc");
| ^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `Z::h`
--> $DIR/hr-associated-type-bound-param-2.rs:6:35
|
diff --git a/tests/ui/associated-types/hr-associated-type-bound-param-3.stderr b/tests/ui/associated-types/hr-associated-type-bound-param-3.stderr
index 06dca48..0b5c954 100644
--- a/tests/ui/associated-types/hr-associated-type-bound-param-3.stderr
+++ b/tests/ui/associated-types/hr-associated-type-bound-param-3.stderr
@@ -4,7 +4,8 @@
LL | type U = str;
| ^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `X`
--> $DIR/hr-associated-type-bound-param-3.rs:4:33
|
@@ -20,7 +21,8 @@
LL | <(i32,) as X<(i32,)>>::f("abc");
| ^^^^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `X::f`
--> $DIR/hr-associated-type-bound-param-3.rs:4:33
|
diff --git a/tests/ui/associated-types/hr-associated-type-bound-param-4.stderr b/tests/ui/associated-types/hr-associated-type-bound-param-4.stderr
index da0cf6f..f0ceeb1 100644
--- a/tests/ui/associated-types/hr-associated-type-bound-param-4.stderr
+++ b/tests/ui/associated-types/hr-associated-type-bound-param-4.stderr
@@ -4,7 +4,8 @@
LL | type U = str;
| ^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `X`
--> $DIR/hr-associated-type-bound-param-4.rs:4:36
|
@@ -20,7 +21,8 @@
LL | <(i32,) as X<i32>>::f("abc");
| ^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `X::f`
--> $DIR/hr-associated-type-bound-param-4.rs:4:36
|
diff --git a/tests/ui/associated-types/hr-associated-type-bound-param-5.stderr b/tests/ui/associated-types/hr-associated-type-bound-param-5.stderr
index dd57657..e4bc5f8 100644
--- a/tests/ui/associated-types/hr-associated-type-bound-param-5.stderr
+++ b/tests/ui/associated-types/hr-associated-type-bound-param-5.stderr
@@ -4,7 +4,8 @@
LL | type U = str;
| ^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `X`
--> $DIR/hr-associated-type-bound-param-5.rs:17:45
|
@@ -20,7 +21,8 @@
LL | type U = str;
| ^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `X`
--> $DIR/hr-associated-type-bound-param-5.rs:17:45
|
@@ -36,7 +38,8 @@
LL | <i32 as X<Box<i32>>>::f("abc");
| ^^^^^^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `X::f`
--> $DIR/hr-associated-type-bound-param-5.rs:15:33
|
diff --git a/tests/ui/associated-types/hr-associated-type-bound-param-6.stderr b/tests/ui/associated-types/hr-associated-type-bound-param-6.stderr
index b2a86bb..af94a33 100644
--- a/tests/ui/associated-types/hr-associated-type-bound-param-6.stderr
+++ b/tests/ui/associated-types/hr-associated-type-bound-param-6.stderr
@@ -15,7 +15,11 @@
LL | <(i32,) as X<i32>>::f("abc");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `for<'b> X<'b, i32>` is not implemented for `i32`
|
- = help: the trait `X<'_, T>` is implemented for `(S,)`
+help: the trait `X<'_, T>` is implemented for `(S,)`
+ --> $DIR/hr-associated-type-bound-param-6.rs:12:1
+ |
+LL | impl<S, T> X<'_, T> for (S,) {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0277]: the trait bound `for<'b> i32: X<'b, i32>` is not satisfied
--> $DIR/hr-associated-type-bound-param-6.rs:18:18
@@ -23,7 +27,11 @@
LL | <(i32,) as X<i32>>::f("abc");
| ^^^ the trait `for<'b> X<'b, i32>` is not implemented for `i32`
|
- = help: the trait `X<'_, T>` is implemented for `(S,)`
+help: the trait `X<'_, T>` is implemented for `(S,)`
+ --> $DIR/hr-associated-type-bound-param-6.rs:12:1
+ |
+LL | impl<S, T> X<'_, T> for (S,) {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `X::f`
--> $DIR/hr-associated-type-bound-param-6.rs:3:16
|
@@ -39,7 +47,11 @@
LL | <(i32,) as X<i32>>::f("abc");
| ^^^^^ the trait `X<'_, i32>` is not implemented for `i32`
|
- = help: the trait `X<'_, T>` is implemented for `(S,)`
+help: the trait `X<'_, T>` is implemented for `(S,)`
+ --> $DIR/hr-associated-type-bound-param-6.rs:12:1
+ |
+LL | impl<S, T> X<'_, T> for (S,) {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 4 previous errors
diff --git a/tests/ui/associated-types/issue-65774-1.stderr b/tests/ui/associated-types/issue-65774-1.stderr
index 3c8da09..1cc335f 100644
--- a/tests/ui/associated-types/issue-65774-1.stderr
+++ b/tests/ui/associated-types/issue-65774-1.stderr
@@ -9,7 +9,11 @@
|
LL | struct T;
| ^^^^^^^^
- = help: the trait `MyDisplay` is implemented for `&'a mut T`
+help: the trait `MyDisplay` is implemented for `&'a mut T`
+ --> $DIR/issue-65774-1.rs:5:1
+ |
+LL | impl<'a, T: MyDisplay> MyDisplay for &'a mut T { }
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `MPU::MpuConfig`
--> $DIR/issue-65774-1.rs:10:21
|
@@ -27,7 +31,11 @@
|
LL | struct T;
| ^^^^^^^^
- = help: the trait `MyDisplay` is implemented for `&'a mut T`
+help: the trait `MyDisplay` is implemented for `&'a mut T`
+ --> $DIR/issue-65774-1.rs:5:1
+ |
+LL | impl<'a, T: MyDisplay> MyDisplay for &'a mut T { }
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required for `&mut T` to implement `MyDisplay`
--> $DIR/issue-65774-1.rs:5:24
|
diff --git a/tests/ui/associated-types/issue-65774-2.stderr b/tests/ui/associated-types/issue-65774-2.stderr
index 82210b8..6ef4289 100644
--- a/tests/ui/associated-types/issue-65774-2.stderr
+++ b/tests/ui/associated-types/issue-65774-2.stderr
@@ -9,7 +9,11 @@
|
LL | struct T;
| ^^^^^^^^
- = help: the trait `MyDisplay` is implemented for `&'a mut T`
+help: the trait `MyDisplay` is implemented for `&'a mut T`
+ --> $DIR/issue-65774-2.rs:5:1
+ |
+LL | impl<'a, T: MyDisplay> MyDisplay for &'a mut T { }
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `MPU::MpuConfig`
--> $DIR/issue-65774-2.rs:10:21
|
@@ -27,7 +31,11 @@
|
LL | struct T;
| ^^^^^^^^
- = help: the trait `MyDisplay` is implemented for `&'a mut T`
+help: the trait `MyDisplay` is implemented for `&'a mut T`
+ --> $DIR/issue-65774-2.rs:5:1
+ |
+LL | impl<'a, T: MyDisplay> MyDisplay for &'a mut T { }
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: required for the cast from `&mut T` to `&dyn MyDisplay`
error: aborting due to 2 previous errors
diff --git a/tests/ui/associated-types/projection-dyn-associated-type.stderr b/tests/ui/associated-types/projection-dyn-associated-type.stderr
index 1ac2beb..c61a086 100644
--- a/tests/ui/associated-types/projection-dyn-associated-type.stderr
+++ b/tests/ui/associated-types/projection-dyn-associated-type.stderr
@@ -35,7 +35,11 @@
LL | ) -> &'a <dyn B + 'static as Mirror>::Assoc {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Mirror` is not implemented for `(dyn B + 'static)`
|
- = help: the trait `Mirror` is implemented for `dyn A`
+help: the trait `Mirror` is implemented for `dyn A`
+ --> $DIR/projection-dyn-associated-type.rs:13:1
+ |
+LL | impl<T: ?Sized> Mirror for A {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0277]: the trait bound `(dyn B + 'static): Mirror` is not satisfied
--> $DIR/projection-dyn-associated-type.rs:22:6
@@ -43,7 +47,11 @@
LL | ) -> &'a <dyn B + 'static as Mirror>::Assoc {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Mirror` is not implemented for `(dyn B + 'static)`
|
- = help: the trait `Mirror` is implemented for `dyn A`
+help: the trait `Mirror` is implemented for `dyn A`
+ --> $DIR/projection-dyn-associated-type.rs:13:1
+ |
+LL | impl<T: ?Sized> Mirror for A {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error: aborting due to 4 previous errors; 1 warning emitted
diff --git a/tests/ui/binop/binary-op-suggest-deref.stderr b/tests/ui/binop/binary-op-suggest-deref.stderr
index 440625d..0c9b1d9 100644
--- a/tests/ui/binop/binary-op-suggest-deref.stderr
+++ b/tests/ui/binop/binary-op-suggest-deref.stderr
@@ -302,11 +302,17 @@
| ^ no implementation for `i32 & str`
|
= help: the trait `BitAnd<str>` is not implemented for `i32`
- = help: the following other types implement trait `BitAnd<Rhs>`:
- `&i32` implements `BitAnd<i32>`
- `&i32` implements `BitAnd`
- `i32` implements `BitAnd<&i32>`
- `i32` implements `BitAnd`
+help: the following other types implement trait `BitAnd<Rhs>`
+ --> $SRC_DIR/core/src/ops/bit.rs:LL:COL
+ |
+ = note: `&i32` implements `BitAnd<i32>`
+ |
+ = note: `&i32` implements `BitAnd`
+ |
+ = note: `i32` implements `BitAnd<&i32>`
+ |
+ = note: `i32` implements `BitAnd`
+ = note: this error originates in the macro `bitand_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the size for values of type `str` cannot be known at compilation time
--> $DIR/binary-op-suggest-deref.rs:78:17
diff --git a/tests/ui/binop/binop-mul-i32-f32.stderr b/tests/ui/binop/binop-mul-i32-f32.stderr
index dfb96a0..dc4e7fd 100644
--- a/tests/ui/binop/binop-mul-i32-f32.stderr
+++ b/tests/ui/binop/binop-mul-i32-f32.stderr
@@ -5,11 +5,17 @@
| ^ no implementation for `i32 * f32`
|
= help: the trait `Mul<f32>` is not implemented for `i32`
- = help: the following other types implement trait `Mul<Rhs>`:
- `&i32` implements `Mul<i32>`
- `&i32` implements `Mul`
- `i32` implements `Mul<&i32>`
- `i32` implements `Mul`
+help: the following other types implement trait `Mul<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&i32` implements `Mul<i32>`
+ |
+ = note: `&i32` implements `Mul`
+ |
+ = note: `i32` implements `Mul<&i32>`
+ |
+ = note: `i32` implements `Mul`
+ = note: this error originates in the macro `mul_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 1 previous error
diff --git a/tests/ui/block-result/issue-22645.stderr b/tests/ui/block-result/issue-22645.stderr
index 1064848..01bfa95 100644
--- a/tests/ui/block-result/issue-22645.stderr
+++ b/tests/ui/block-result/issue-22645.stderr
@@ -4,7 +4,11 @@
LL | b + 3
| ^ the trait `Scalar` is not implemented for `{integer}`
|
- = help: the trait `Scalar` is implemented for `f64`
+help: the trait `Scalar` is implemented for `f64`
+ --> $DIR/issue-22645.rs:4:1
+ |
+LL | impl Scalar for f64 {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required for `Bob` to implement `Add<{integer}>`
--> $DIR/issue-22645.rs:8:19
|
diff --git a/tests/ui/const-generics/adt_const_params/const_param_ty_bad.stderr b/tests/ui/const-generics/adt_const_params/const_param_ty_bad.stderr
index ff514f5..75718fb 100644
--- a/tests/ui/const-generics/adt_const_params/const_param_ty_bad.stderr
+++ b/tests/ui/const-generics/adt_const_params/const_param_ty_bad.stderr
@@ -82,12 +82,14 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `ConstParamTy_` is implemented for `()`
+help: the trait `ConstParamTy_` is implemented for `()`
+ --> $SRC_DIR/core/src/marker.rs:LL:COL
note: required by a bound in `check`
--> $DIR/const_param_ty_bad.rs:4:18
|
LL | fn check(_: impl std::marker::ConstParamTy_) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
+ = note: this error originates in the macro `marker_impls` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: `*const ()` can't be used as a const parameter type
--> $DIR/const_param_ty_bad.rs:12:11
@@ -97,12 +99,14 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `ConstParamTy_` is implemented for `()`
+help: the trait `ConstParamTy_` is implemented for `()`
+ --> $SRC_DIR/core/src/marker.rs:LL:COL
note: required by a bound in `check`
--> $DIR/const_param_ty_bad.rs:4:18
|
LL | fn check(_: impl std::marker::ConstParamTy_) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `check`
+ = note: this error originates in the macro `marker_impls` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 6 previous errors
diff --git a/tests/ui/const-generics/adt_const_params/unsizing-wfcheck-issue-126272.stderr b/tests/ui/const-generics/adt_const_params/unsizing-wfcheck-issue-126272.stderr
index d4aeb91..af29eaa 100644
--- a/tests/ui/const-generics/adt_const_params/unsizing-wfcheck-issue-126272.stderr
+++ b/tests/ui/const-generics/adt_const_params/unsizing-wfcheck-issue-126272.stderr
@@ -53,7 +53,11 @@
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
|
= help: the trait `Sized` is not implemented for `(dyn Debug + 'static)`
- = help: the trait `Debug` is implemented for `Bar<T>`
+help: the trait `Debug` is implemented for `Bar<T>`
+ --> $DIR/unsizing-wfcheck-issue-126272.rs:19:10
+ |
+LL | #[derive(Debug, PartialEq, Eq, ConstParamTy)]
+ | ^^^^^
note: required for `Bar<(dyn Debug + 'static)>` to implement `Debug`
--> $DIR/unsizing-wfcheck-issue-126272.rs:19:10
|
@@ -83,7 +87,11 @@
LL | nested: &'static Bar<dyn std::fmt::Debug>,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Eq` is not implemented for `dyn Debug`
|
- = help: the trait `Eq` is implemented for `Bar<T>`
+help: the trait `Eq` is implemented for `Bar<T>`
+ --> $DIR/unsizing-wfcheck-issue-126272.rs:19:28
+ |
+LL | #[derive(Debug, PartialEq, Eq, ConstParamTy)]
+ | ^^
note: required for `Bar<dyn Debug>` to implement `Eq`
--> $DIR/unsizing-wfcheck-issue-126272.rs:19:28
|
diff --git a/tests/ui/const-generics/associated-type-bound-fail.stderr b/tests/ui/const-generics/associated-type-bound-fail.stderr
index e92aad7..86e6674 100644
--- a/tests/ui/const-generics/associated-type-bound-fail.stderr
+++ b/tests/ui/const-generics/associated-type-bound-fail.stderr
@@ -4,8 +4,12 @@
LL | type Assoc = u16;
| ^^^ the trait `Bar<N>` is not implemented for `u16`
|
- = help: the trait `Bar<N>` is not implemented for `u16`
- but trait `Bar<3>` is implemented for it
+help: the trait `Bar<N>` is not implemented for `u16`
+ but trait `Bar<3>` is implemented for it
+ --> $DIR/associated-type-bound-fail.rs:7:1
+ |
+LL | impl Bar<3> for u16 {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `Foo::Assoc`
--> $DIR/associated-type-bound-fail.rs:4:17
|
diff --git a/tests/ui/const-generics/defaults/rp_impl_trait_fail.stderr b/tests/ui/const-generics/defaults/rp_impl_trait_fail.stderr
index 65c480d..286d662 100644
--- a/tests/ui/const-generics/defaults/rp_impl_trait_fail.stderr
+++ b/tests/ui/const-generics/defaults/rp_impl_trait_fail.stderr
@@ -12,7 +12,11 @@
|
LL | struct Uwu<const N: u32 = 1, const M: u32 = N>;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- = help: the trait `Trait` is implemented for `Uwu<N>`
+help: the trait `Trait` is implemented for `Uwu<N>`
+ --> $DIR/rp_impl_trait_fail.rs:4:1
+ |
+LL | impl<const N: u32> Trait for Uwu<N> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0277]: the trait bound `u32: Traitor<N>` is not satisfied
--> $DIR/rp_impl_trait_fail.rs:16:26
@@ -23,8 +27,12 @@
LL | 1_u32
| ----- return type was inferred to be `u32` here
|
- = help: the trait `Traitor<N, N>` is not implemented for `u32`
- but trait `Traitor<N, 2>` is implemented for it
+help: the trait `Traitor<N, N>` is not implemented for `u32`
+ but trait `Traitor<N, 2>` is implemented for it
+ --> $DIR/rp_impl_trait_fail.rs:13:1
+ |
+LL | impl<const N: u8> Traitor<N, 2> for u32 {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0277]: the trait bound `u64: Traitor` is not satisfied
--> $DIR/rp_impl_trait_fail.rs:21:13
@@ -35,8 +43,12 @@
LL | 1_u64
| ----- return type was inferred to be `u64` here
|
- = help: the trait `Traitor<1, 1>` is not implemented for `u64`
- but trait `Traitor<1, 2>` is implemented for it
+help: the trait `Traitor<1, 1>` is not implemented for `u64`
+ but trait `Traitor<1, 2>` is implemented for it
+ --> $DIR/rp_impl_trait_fail.rs:14:1
+ |
+LL | impl Traitor<1, 2> for u64 {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^
error[E0284]: type annotations needed
--> $DIR/rp_impl_trait_fail.rs:28:5
diff --git a/tests/ui/const-generics/defaults/trait_objects_fail.stderr b/tests/ui/const-generics/defaults/trait_objects_fail.stderr
index 2390dfe..f79d45d 100644
--- a/tests/ui/const-generics/defaults/trait_objects_fail.stderr
+++ b/tests/ui/const-generics/defaults/trait_objects_fail.stderr
@@ -4,8 +4,12 @@
LL | foo(&10_u32);
| ^^^^^^^ the trait `Trait` is not implemented for `u32`
|
- = help: the trait `Trait<12>` is not implemented for `u32`
- but trait `Trait<2>` is implemented for it
+help: the trait `Trait<12>` is not implemented for `u32`
+ but trait `Trait<2>` is implemented for it
+ --> $DIR/trait_objects_fail.rs:7:1
+ |
+LL | impl Trait<2> for u32 {}
+ | ^^^^^^^^^^^^^^^^^^^^^
= note: required for the cast from `&u32` to `&dyn Trait`
error[E0277]: the trait bound `bool: Traitor<_>` is not satisfied
@@ -14,8 +18,12 @@
LL | bar(&true);
| ^^^^^ the trait `Traitor<_>` is not implemented for `bool`
|
- = help: the trait `Traitor<_, _>` is not implemented for `bool`
- but trait `Traitor<2, 3>` is implemented for it
+help: the trait `Traitor<_, _>` is not implemented for `bool`
+ but trait `Traitor<2, 3>` is implemented for it
+ --> $DIR/trait_objects_fail.rs:19:1
+ |
+LL | impl Traitor<2, 3> for bool {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: required for the cast from `&bool` to `&dyn Traitor<_>`
error: aborting due to 2 previous errors
diff --git a/tests/ui/const-generics/defaults/wfness.stderr b/tests/ui/const-generics/defaults/wfness.stderr
index 7098850..8604499 100644
--- a/tests/ui/const-generics/defaults/wfness.stderr
+++ b/tests/ui/const-generics/defaults/wfness.stderr
@@ -10,8 +10,12 @@
LL | (): Trait<N>;
| ^^^^^^^^ the trait `Trait<2>` is not implemented for `()`
|
- = help: the trait `Trait<2>` is not implemented for `()`
- but trait `Trait<3>` is implemented for it
+help: the trait `Trait<2>` is not implemented for `()`
+ but trait `Trait<3>` is implemented for it
+ --> $DIR/wfness.rs:5:1
+ |
+LL | impl Trait<3> for () {}
+ | ^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `WhereClause`
--> $DIR/wfness.rs:8:9
|
@@ -27,8 +31,12 @@
LL | fn foo() -> DependentDefaultWfness {
| ^^^^^^^^^^^^^^^^^^^^^^ the trait `Trait<1>` is not implemented for `()`
|
- = help: the trait `Trait<1>` is not implemented for `()`
- but trait `Trait<3>` is implemented for it
+help: the trait `Trait<1>` is not implemented for `()`
+ but trait `Trait<3>` is implemented for it
+ --> $DIR/wfness.rs:5:1
+ |
+LL | impl Trait<3> for () {}
+ | ^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `WhereClause`
--> $DIR/wfness.rs:8:9
|
diff --git a/tests/ui/const-generics/issues/issue-67185-2.stderr b/tests/ui/const-generics/issues/issue-67185-2.stderr
index 82813a2..85f9169 100644
--- a/tests/ui/const-generics/issues/issue-67185-2.stderr
+++ b/tests/ui/const-generics/issues/issue-67185-2.stderr
@@ -4,9 +4,13 @@
LL | <u8 as Baz>::Quaks: Bar,
| ^^^^^^^^^^^^^^^^^^^^^^^ the trait `Bar` is not implemented for `[u16; 3]`
|
- = help: the following other types implement trait `Bar`:
- [[u16; 3]; 3]
- [u16; 4]
+help: the following other types implement trait `Bar`
+ --> $DIR/issue-67185-2.rs:9:1
+ |
+LL | impl Bar for [u16; 4] {}
+ | ^^^^^^^^^^^^^^^^^^^^^ `[u16; 4]`
+LL | impl Bar for [[u16; 3]; 3] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `[[u16; 3]; 3]`
= help: see issue #48214
help: add `#![feature(trivial_bounds)]` to the crate attributes to enable
|
@@ -19,9 +23,13 @@
LL | [<u8 as Baz>::Quaks; 2]: Bar,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Bar` is not implemented for `[[u16; 3]; 2]`
|
- = help: the following other types implement trait `Bar`:
- [[u16; 3]; 3]
- [u16; 4]
+help: the following other types implement trait `Bar`
+ --> $DIR/issue-67185-2.rs:9:1
+ |
+LL | impl Bar for [u16; 4] {}
+ | ^^^^^^^^^^^^^^^^^^^^^ `[u16; 4]`
+LL | impl Bar for [[u16; 3]; 3] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `[[u16; 3]; 3]`
= help: see issue #48214
help: add `#![feature(trivial_bounds)]` to the crate attributes to enable
|
@@ -34,9 +42,13 @@
LL | impl Foo for FooImpl {}
| ^^^ the trait `Bar` is not implemented for `[u16; 3]`
|
- = help: the following other types implement trait `Bar`:
- [[u16; 3]; 3]
- [u16; 4]
+help: the following other types implement trait `Bar`
+ --> $DIR/issue-67185-2.rs:9:1
+ |
+LL | impl Bar for [u16; 4] {}
+ | ^^^^^^^^^^^^^^^^^^^^^ `[u16; 4]`
+LL | impl Bar for [[u16; 3]; 3] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `[[u16; 3]; 3]`
note: required by a bound in `Foo`
--> $DIR/issue-67185-2.rs:15:25
|
@@ -52,9 +64,13 @@
LL | impl Foo for FooImpl {}
| ^^^ the trait `Bar` is not implemented for `[[u16; 3]; 2]`
|
- = help: the following other types implement trait `Bar`:
- [[u16; 3]; 3]
- [u16; 4]
+help: the following other types implement trait `Bar`
+ --> $DIR/issue-67185-2.rs:9:1
+ |
+LL | impl Bar for [u16; 4] {}
+ | ^^^^^^^^^^^^^^^^^^^^^ `[u16; 4]`
+LL | impl Bar for [[u16; 3]; 3] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `[[u16; 3]; 3]`
note: required by a bound in `Foo`
--> $DIR/issue-67185-2.rs:14:30
|
@@ -70,9 +86,13 @@
LL | fn f(_: impl Foo) {}
| ^^^ the trait `Bar` is not implemented for `[[u16; 3]; 2]`
|
- = help: the following other types implement trait `Bar`:
- [[u16; 3]; 3]
- [u16; 4]
+help: the following other types implement trait `Bar`
+ --> $DIR/issue-67185-2.rs:9:1
+ |
+LL | impl Bar for [u16; 4] {}
+ | ^^^^^^^^^^^^^^^^^^^^^ `[u16; 4]`
+LL | impl Bar for [[u16; 3]; 3] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `[[u16; 3]; 3]`
note: required by a bound in `Foo`
--> $DIR/issue-67185-2.rs:14:30
|
@@ -88,9 +108,13 @@
LL | fn f(_: impl Foo) {}
| ^^^ the trait `Bar` is not implemented for `[u16; 3]`
|
- = help: the following other types implement trait `Bar`:
- [[u16; 3]; 3]
- [u16; 4]
+help: the following other types implement trait `Bar`
+ --> $DIR/issue-67185-2.rs:9:1
+ |
+LL | impl Bar for [u16; 4] {}
+ | ^^^^^^^^^^^^^^^^^^^^^ `[u16; 4]`
+LL | impl Bar for [[u16; 3]; 3] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `[[u16; 3]; 3]`
note: required by a bound in `Foo`
--> $DIR/issue-67185-2.rs:15:25
|
diff --git a/tests/ui/const-generics/issues/issue-83249.stderr b/tests/ui/const-generics/issues/issue-83249.stderr
index f41115c..2d561db 100644
--- a/tests/ui/const-generics/issues/issue-83249.stderr
+++ b/tests/ui/const-generics/issues/issue-83249.stderr
@@ -7,7 +7,11 @@
| required by a bound introduced by this call
|
= note: cannot satisfy `_: Foo`
- = help: the trait `Foo` is implemented for `u8`
+help: the trait `Foo` is implemented for `u8`
+ --> $DIR/issue-83249.rs:8:1
+ |
+LL | impl Foo for u8 {
+ | ^^^^^^^^^^^^^^^
note: required by a bound in `foo`
--> $DIR/issue-83249.rs:12:11
|
diff --git a/tests/ui/const-generics/occurs-check/unused-substs-1.stderr b/tests/ui/const-generics/occurs-check/unused-substs-1.stderr
index 70fc71c..9fd48b1 100644
--- a/tests/ui/const-generics/occurs-check/unused-substs-1.stderr
+++ b/tests/ui/const-generics/occurs-check/unused-substs-1.stderr
@@ -4,8 +4,12 @@
LL | let _ = A;
| ^ unsatisfied trait bound
|
- = help: the trait `Bar<_>` is not implemented for `A<_>`
- but it is implemented for `A<{ 6 + 1 }>`
+help: the trait `Bar<_>` is not implemented for `A<_>`
+ but it is implemented for `A<{ 6 + 1 }>`
+ --> $DIR/unused-substs-1.rs:5:1
+ |
+LL | impl<const N: usize> Bar<N> for A<{ 6 + 1 }> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `A`
--> $DIR/unused-substs-1.rs:9:11
|
diff --git a/tests/ui/consts/const-eval-array-len-in-impl.stderr b/tests/ui/consts/const-eval-array-len-in-impl.stderr
index faff7aa..109dc23 100644
--- a/tests/ui/consts/const-eval-array-len-in-impl.stderr
+++ b/tests/ui/consts/const-eval-array-len-in-impl.stderr
@@ -4,7 +4,11 @@
LL | <[(); 0] as Foo>::foo()
| ^^^^^^^ the trait `Foo` is not implemented for `[(); 0]`
|
- = help: the trait `Foo` is implemented for `[(); 1]`
+help: the trait `Foo` is implemented for `[(); 1]`
+ --> $DIR/const-eval-array-len-in-impl.rs:9:1
+ |
+LL | impl Foo for [(); 1] {
+ | ^^^^^^^^^^^^^^^^^^^^
error: aborting due to 1 previous error
diff --git a/tests/ui/consts/const-eval/const-eval-overflow-3b.stderr b/tests/ui/consts/const-eval/const-eval-overflow-3b.stderr
index f6eda69..4209e4b 100644
--- a/tests/ui/consts/const-eval/const-eval-overflow-3b.stderr
+++ b/tests/ui/consts/const-eval/const-eval-overflow-3b.stderr
@@ -11,11 +11,17 @@
| ^ no implementation for `i8 + u8`
|
= help: the trait `Add<u8>` is not implemented for `i8`
- = help: the following other types implement trait `Add<Rhs>`:
- `&i8` implements `Add<i8>`
- `&i8` implements `Add`
- `i8` implements `Add<&i8>`
- `i8` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&i8` implements `Add<i8>`
+ |
+ = note: `&i8` implements `Add`
+ |
+ = note: `i8` implements `Add<&i8>`
+ |
+ = note: `i8` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 2 previous errors
diff --git a/tests/ui/consts/const-eval/const-eval-overflow-4b.stderr b/tests/ui/consts/const-eval/const-eval-overflow-4b.stderr
index b996370..2677d79 100644
--- a/tests/ui/consts/const-eval/const-eval-overflow-4b.stderr
+++ b/tests/ui/consts/const-eval/const-eval-overflow-4b.stderr
@@ -11,11 +11,17 @@
| ^ no implementation for `i8 + u8`
|
= help: the trait `Add<u8>` is not implemented for `i8`
- = help: the following other types implement trait `Add<Rhs>`:
- `&i8` implements `Add<i8>`
- `&i8` implements `Add`
- `i8` implements `Add<&i8>`
- `i8` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&i8` implements `Add<i8>`
+ |
+ = note: `&i8` implements `Add`
+ |
+ = note: `i8` implements `Add<&i8>`
+ |
+ = note: `i8` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0604]: only `u8` can be cast as `char`, not `i8`
--> $DIR/const-eval-overflow-4b.rs:24:13
diff --git a/tests/ui/delegation/correct_body_owner_parent_found_in_diagnostics.stderr b/tests/ui/delegation/correct_body_owner_parent_found_in_diagnostics.stderr
index b0bfc72..ae5d0e8 100644
--- a/tests/ui/delegation/correct_body_owner_parent_found_in_diagnostics.stderr
+++ b/tests/ui/delegation/correct_body_owner_parent_found_in_diagnostics.stderr
@@ -58,7 +58,11 @@
LL | reuse <u8 as Trait>::{foo, bar, meh} { &const { InvariantRef::<'a>::NEW } }
| ^^ the trait `Trait` is not implemented for `u8`
|
- = help: the trait `Trait` is implemented for `Z`
+help: the trait `Trait` is implemented for `Z`
+ --> $DIR/correct_body_owner_parent_found_in_diagnostics.rs:21:1
+ |
+LL | impl Trait for Z {
+ | ^^^^^^^^^^^^^^^^
error[E0308]: mismatched types
--> $DIR/correct_body_owner_parent_found_in_diagnostics.rs:22:53
@@ -75,7 +79,11 @@
LL | reuse <u8 as Trait>::{foo, bar, meh} { &const { InvariantRef::<'a>::NEW } }
| ^^ the trait `Trait` is not implemented for `u8`
|
- = help: the trait `Trait` is implemented for `Z`
+help: the trait `Trait` is implemented for `Z`
+ --> $DIR/correct_body_owner_parent_found_in_diagnostics.rs:21:1
+ |
+LL | impl Trait for Z {
+ | ^^^^^^^^^^^^^^^^
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error[E0308]: mismatched types
@@ -94,7 +102,11 @@
LL | reuse <u8 as Trait>::{foo, bar, meh} { &const { InvariantRef::<'a>::NEW } }
| ^^ the trait `Trait` is not implemented for `u8`
|
- = help: the trait `Trait` is implemented for `Z`
+help: the trait `Trait` is implemented for `Z`
+ --> $DIR/correct_body_owner_parent_found_in_diagnostics.rs:21:1
+ |
+LL | impl Trait for Z {
+ | ^^^^^^^^^^^^^^^^
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
error[E0308]: mismatched types
diff --git a/tests/ui/delegation/explicit-paths.stderr b/tests/ui/delegation/explicit-paths.stderr
index 29f87cf..30239f3 100644
--- a/tests/ui/delegation/explicit-paths.stderr
+++ b/tests/ui/delegation/explicit-paths.stderr
@@ -96,9 +96,17 @@
|
LL | struct S2;
| ^^^^^^^^^
- = help: the following other types implement trait `Trait`:
- F
- S
+help: the following other types implement trait `Trait`
+ --> $DIR/explicit-paths.rs:10:1
+ |
+LL | impl Trait for F {}
+ | ^^^^^^^^^^^^^^^^ `F`
+...
+LL | impl Trait for S {
+ | ^^^^^^^^^^^^^^^^ `S`
+...
+LL | impl Trait for S {
+ | ^^^^^^^^^^^^^^^^ `S`
error[E0308]: mismatched types
--> $DIR/explicit-paths.rs:76:30
diff --git a/tests/ui/diagnostic_namespace/do_not_recommend/as_expression.current.stderr b/tests/ui/diagnostic_namespace/do_not_recommend/as_expression.current.stderr
index 305fbbd..46dd21c 100644
--- a/tests/ui/diagnostic_namespace/do_not_recommend/as_expression.current.stderr
+++ b/tests/ui/diagnostic_namespace/do_not_recommend/as_expression.current.stderr
@@ -4,8 +4,12 @@
LL | SelectInt.check("bar");
| ^^^^^ the trait `AsExpression<Integer>` is not implemented for `&str`
|
- = help: the trait `AsExpression<Integer>` is not implemented for `&str`
- but trait `AsExpression<Text>` is implemented for it
+help: the trait `AsExpression<Integer>` is not implemented for `&str`
+ but trait `AsExpression<Text>` is implemented for it
+ --> $DIR/as_expression.rs:40:1
+ |
+LL | impl AsExpression<Text> for &'_ str {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `Text`, found `Integer`
error: aborting due to 1 previous error
diff --git a/tests/ui/diagnostic_namespace/do_not_recommend/as_expression.next.stderr b/tests/ui/diagnostic_namespace/do_not_recommend/as_expression.next.stderr
index 8178f54b..445aeb4 100644
--- a/tests/ui/diagnostic_namespace/do_not_recommend/as_expression.next.stderr
+++ b/tests/ui/diagnostic_namespace/do_not_recommend/as_expression.next.stderr
@@ -6,8 +6,12 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `AsExpression<Integer>` is not implemented for `&str`
- but trait `AsExpression<Text>` is implemented for it
+help: the trait `AsExpression<Integer>` is not implemented for `&str`
+ but trait `AsExpression<Text>` is implemented for it
+ --> $DIR/as_expression.rs:40:1
+ |
+LL | impl AsExpression<Text> for &'_ str {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `Text`, found `Integer`
note: required by a bound in `Foo::check`
--> $DIR/as_expression.rs:47:12
@@ -24,8 +28,12 @@
LL | SelectInt.check("bar");
| ^^^^^^^^^^^^^^^^^^^^^^ the trait `AsExpression<Integer>` is not implemented for `&str`
|
- = help: the trait `AsExpression<Integer>` is not implemented for `&str`
- but trait `AsExpression<Text>` is implemented for it
+help: the trait `AsExpression<Integer>` is not implemented for `&str`
+ but trait `AsExpression<Text>` is implemented for it
+ --> $DIR/as_expression.rs:40:1
+ |
+LL | impl AsExpression<Text> for &'_ str {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `Text`, found `Integer`
error: aborting due to 2 previous errors
diff --git a/tests/ui/diagnostic_namespace/do_not_recommend/supress_suggestions_in_help.current.stderr b/tests/ui/diagnostic_namespace/do_not_recommend/supress_suggestions_in_help.current.stderr
index 0b07b07..a841e7c 100644
--- a/tests/ui/diagnostic_namespace/do_not_recommend/supress_suggestions_in_help.current.stderr
+++ b/tests/ui/diagnostic_namespace/do_not_recommend/supress_suggestions_in_help.current.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Foo` is implemented for `i32`
+help: the trait `Foo` is implemented for `i32`
+ --> $DIR/supress_suggestions_in_help.rs:17:1
+ |
+LL | impl Foo for i32 {}
+ | ^^^^^^^^^^^^^^^^
note: required by a bound in `check`
--> $DIR/supress_suggestions_in_help.rs:19:18
|
diff --git a/tests/ui/diagnostic_namespace/do_not_recommend/supress_suggestions_in_help.next.stderr b/tests/ui/diagnostic_namespace/do_not_recommend/supress_suggestions_in_help.next.stderr
index 0b07b07..a841e7c 100644
--- a/tests/ui/diagnostic_namespace/do_not_recommend/supress_suggestions_in_help.next.stderr
+++ b/tests/ui/diagnostic_namespace/do_not_recommend/supress_suggestions_in_help.next.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Foo` is implemented for `i32`
+help: the trait `Foo` is implemented for `i32`
+ --> $DIR/supress_suggestions_in_help.rs:17:1
+ |
+LL | impl Foo for i32 {}
+ | ^^^^^^^^^^^^^^^^
note: required by a bound in `check`
--> $DIR/supress_suggestions_in_help.rs:19:18
|
diff --git a/tests/ui/diagnostic_namespace/on_unimplemented/do_not_accept_options_of_the_internal_rustc_attribute.stderr b/tests/ui/diagnostic_namespace/on_unimplemented/do_not_accept_options_of_the_internal_rustc_attribute.stderr
index 6493a8c..eaf1de9 100644
--- a/tests/ui/diagnostic_namespace/on_unimplemented/do_not_accept_options_of_the_internal_rustc_attribute.stderr
+++ b/tests/ui/diagnostic_namespace/on_unimplemented/do_not_accept_options_of_the_internal_rustc_attribute.stderr
@@ -193,7 +193,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Bar` is implemented for `i32`
+help: the trait `Bar` is implemented for `i32`
+ --> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:28:1
+ |
+LL | impl Bar for i32 {}
+ | ^^^^^^^^^^^^^^^^
note: required by a bound in `takes_bar`
--> $DIR/do_not_accept_options_of_the_internal_rustc_attribute.rs:61:22
|
diff --git a/tests/ui/did_you_mean/casting-fn-item-to-fn-pointer.stderr b/tests/ui/did_you_mean/casting-fn-item-to-fn-pointer.stderr
index d069d39..2b08a95 100644
--- a/tests/ui/did_you_mean/casting-fn-item-to-fn-pointer.stderr
+++ b/tests/ui/did_you_mean/casting-fn-item-to-fn-pointer.stderr
@@ -4,8 +4,9 @@
LL | let _: Vec<(&str, fn())> = [("foo", foo)].into_iter().collect();
| ^^^^^^^ value of type `Vec<(&str, fn())>` cannot be built from `std::iter::Iterator<Item=(&str, fn() {foo})>`
|
- = help: the trait `FromIterator<(&_, fn() {foo})>` is not implemented for `Vec<(&str, fn())>`
- but trait `FromIterator<(&_, fn())>` is implemented for it
+help: the trait `FromIterator<(&_, fn() {foo})>` is not implemented for `Vec<(&str, fn())>`
+ but trait `FromIterator<(&_, fn())>` is implemented for it
+ --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
= help: for that trait implementation, expected `fn()`, found `fn() {foo}`
= note: fn items are distinct from fn pointers
= help: consider casting the fn item to a fn pointer: `foo as fn()`
@@ -25,8 +26,9 @@
LL | let _: Vec<fn()> = [foo].into_iter().collect();
| ^^^^^^^ value of type `Vec<fn()>` cannot be built from `std::iter::Iterator<Item=fn() {foo}>`
|
- = help: the trait `FromIterator<fn() {foo}>` is not implemented for `Vec<fn()>`
- but trait `FromIterator<fn()>` is implemented for it
+help: the trait `FromIterator<fn() {foo}>` is not implemented for `Vec<fn()>`
+ but trait `FromIterator<fn()>` is implemented for it
+ --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
= help: for that trait implementation, expected `fn()`, found `fn() {foo}`
= note: fn items are distinct from fn pointers
= help: consider casting the fn item to a fn pointer: `foo as fn()`
diff --git a/tests/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.stderr b/tests/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.stderr
index b754baf..4a38546 100644
--- a/tests/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.stderr
+++ b/tests/ui/did_you_mean/issue-21659-show-relevant-trait-impls-1.stderr
@@ -11,9 +11,14 @@
|
LL | struct Bar;
| ^^^^^^^^^^
- = help: the following other types implement trait `Foo<A>`:
- `Bar` implements `Foo<i32>`
- `Bar` implements `Foo<u8>`
+help: the following other types implement trait `Foo<A>`
+ --> $DIR/issue-21659-show-relevant-trait-impls-1.rs:15:1
+ |
+LL | impl Foo<i32> for Bar {}
+ | ^^^^^^^^^^^^^^^^^^^^^ `Bar` implements `Foo<i32>`
+LL |
+LL | impl Foo<u8> for Bar {}
+ | ^^^^^^^^^^^^^^^^^^^^ `Bar` implements `Foo<u8>`
error: aborting due to 1 previous error
diff --git a/tests/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr b/tests/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr
index b502030..8bacae9 100644
--- a/tests/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr
+++ b/tests/ui/did_you_mean/issue-39802-show-5-trait-impls.stderr
@@ -21,11 +21,17 @@
| |
| required by a bound introduced by this call
|
- = help: the following other types implement trait `Foo<B>`:
- `u8` implements `Foo<bool>`
- `u8` implements `Foo<u16>`
- `u8` implements `Foo<u32>`
- `u8` implements `Foo<u64>`
+help: the following other types implement trait `Foo<B>`
+ --> $DIR/issue-39802-show-5-trait-impls.rs:11:1
+ |
+LL | impl Foo<u16> for u8 {}
+ | ^^^^^^^^^^^^^^^^^^^^ `u8` implements `Foo<u16>`
+LL | impl Foo<u32> for u8 {}
+ | ^^^^^^^^^^^^^^^^^^^^ `u8` implements `Foo<u32>`
+LL | impl Foo<u64> for u8 {}
+ | ^^^^^^^^^^^^^^^^^^^^ `u8` implements `Foo<u64>`
+LL | impl Foo<bool> for u8 {}
+ | ^^^^^^^^^^^^^^^^^^^^^ `u8` implements `Foo<bool>`
error[E0277]: the trait bound `bool: Foo<i32>` is not satisfied
--> $DIR/issue-39802-show-5-trait-impls.rs:26:21
diff --git a/tests/ui/dst/issue-90528-unsizing-not-suggestion-110063.stderr b/tests/ui/dst/issue-90528-unsizing-not-suggestion-110063.stderr
index 2d7956f..db32033 100644
--- a/tests/ui/dst/issue-90528-unsizing-not-suggestion-110063.stderr
+++ b/tests/ui/dst/issue-90528-unsizing-not-suggestion-110063.stderr
@@ -4,7 +4,11 @@
LL | needs_test::<[u8; 1]>();
| ^^^^^^^ the trait `Test` is not implemented for `[u8; 1]`
|
- = help: the trait `Test` is implemented for `&[u8]`
+help: the trait `Test` is implemented for `&[u8]`
+ --> $DIR/issue-90528-unsizing-not-suggestion-110063.rs:2:1
+ |
+LL | impl Test for &[u8] {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `needs_test`
--> $DIR/issue-90528-unsizing-not-suggestion-110063.rs:4:18
|
@@ -17,7 +21,11 @@
LL | let x: [u8; 1] = needs_test();
| ^^^^^^^^^^^^ the trait `Test` is not implemented for `[u8; 1]`
|
- = help: the trait `Test` is implemented for `&[u8]`
+help: the trait `Test` is implemented for `&[u8]`
+ --> $DIR/issue-90528-unsizing-not-suggestion-110063.rs:2:1
+ |
+LL | impl Test for &[u8] {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `needs_test`
--> $DIR/issue-90528-unsizing-not-suggestion-110063.rs:4:18
|
diff --git a/tests/ui/dst/issue-90528-unsizing-suggestion-1.stderr b/tests/ui/dst/issue-90528-unsizing-suggestion-1.stderr
index 27ef3fe..f88e4a3 100644
--- a/tests/ui/dst/issue-90528-unsizing-suggestion-1.stderr
+++ b/tests/ui/dst/issue-90528-unsizing-suggestion-1.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Read` is implemented for `&[u8]`
+help: the trait `Read` is implemented for `&[u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-1.rs:8:1
+ |
+LL | impl Read for &[u8] {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_read`
--> $DIR/issue-90528-unsizing-suggestion-1.rs:10:23
|
@@ -25,7 +29,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Read` is implemented for `&[u8]`
+help: the trait `Read` is implemented for `&[u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-1.rs:8:1
+ |
+LL | impl Read for &[u8] {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_read`
--> $DIR/issue-90528-unsizing-suggestion-1.rs:10:23
|
@@ -44,7 +52,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Read` is implemented for `&[u8]`
+help: the trait `Read` is implemented for `&[u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-1.rs:8:1
+ |
+LL | impl Read for &[u8] {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_read`
--> $DIR/issue-90528-unsizing-suggestion-1.rs:10:23
|
diff --git a/tests/ui/dst/issue-90528-unsizing-suggestion-2.stderr b/tests/ui/dst/issue-90528-unsizing-suggestion-2.stderr
index ae0c4ca..4411f4f 100644
--- a/tests/ui/dst/issue-90528-unsizing-suggestion-2.stderr
+++ b/tests/ui/dst/issue-90528-unsizing-suggestion-2.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Read` is implemented for `&[u8]`
+help: the trait `Read` is implemented for `&[u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-2.rs:8:1
+ |
+LL | impl Read for &[u8] {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_read`
--> $DIR/issue-90528-unsizing-suggestion-2.rs:10:23
|
@@ -25,7 +29,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Read` is implemented for `&[u8]`
+help: the trait `Read` is implemented for `&[u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-2.rs:8:1
+ |
+LL | impl Read for &[u8] {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_read`
--> $DIR/issue-90528-unsizing-suggestion-2.rs:10:23
|
@@ -44,7 +52,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Read` is implemented for `&[u8]`
+help: the trait `Read` is implemented for `&[u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-2.rs:8:1
+ |
+LL | impl Read for &[u8] {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_read`
--> $DIR/issue-90528-unsizing-suggestion-2.rs:10:23
|
@@ -63,7 +75,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Read` is implemented for `&[u8]`
+help: the trait `Read` is implemented for `&[u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-2.rs:8:1
+ |
+LL | impl Read for &[u8] {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_read`
--> $DIR/issue-90528-unsizing-suggestion-2.rs:10:23
|
@@ -78,7 +94,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Read` is implemented for `&[u8]`
+help: the trait `Read` is implemented for `&[u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-2.rs:8:1
+ |
+LL | impl Read for &[u8] {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_read`
--> $DIR/issue-90528-unsizing-suggestion-2.rs:10:23
|
diff --git a/tests/ui/dst/issue-90528-unsizing-suggestion-3.stderr b/tests/ui/dst/issue-90528-unsizing-suggestion-3.stderr
index db74943..6404017 100644
--- a/tests/ui/dst/issue-90528-unsizing-suggestion-3.stderr
+++ b/tests/ui/dst/issue-90528-unsizing-suggestion-3.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Write` is implemented for `&mut [u8]`
+help: the trait `Write` is implemented for `&mut [u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-3.rs:8:1
+ |
+LL | impl Write for &mut [u8] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_write`
--> $DIR/issue-90528-unsizing-suggestion-3.rs:10:24
|
@@ -25,7 +29,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Write` is implemented for `&mut [u8]`
+help: the trait `Write` is implemented for `&mut [u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-3.rs:8:1
+ |
+LL | impl Write for &mut [u8] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_write`
--> $DIR/issue-90528-unsizing-suggestion-3.rs:10:24
|
@@ -44,7 +52,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Write` is implemented for `&mut [u8]`
+help: the trait `Write` is implemented for `&mut [u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-3.rs:8:1
+ |
+LL | impl Write for &mut [u8] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_write`
--> $DIR/issue-90528-unsizing-suggestion-3.rs:10:24
|
@@ -59,7 +71,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Write` is implemented for `&mut [u8]`
+help: the trait `Write` is implemented for `&mut [u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-3.rs:8:1
+ |
+LL | impl Write for &mut [u8] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_write`
--> $DIR/issue-90528-unsizing-suggestion-3.rs:10:24
|
diff --git a/tests/ui/dst/issue-90528-unsizing-suggestion-4.stderr b/tests/ui/dst/issue-90528-unsizing-suggestion-4.stderr
index a4020ee..8133ec4 100644
--- a/tests/ui/dst/issue-90528-unsizing-suggestion-4.stderr
+++ b/tests/ui/dst/issue-90528-unsizing-suggestion-4.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Write` is implemented for `&mut [u8]`
+help: the trait `Write` is implemented for `&mut [u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-4.rs:8:1
+ |
+LL | impl Write for &mut [u8] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_write`
--> $DIR/issue-90528-unsizing-suggestion-4.rs:10:24
|
@@ -25,7 +29,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Write` is implemented for `&mut [u8]`
+help: the trait `Write` is implemented for `&mut [u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-4.rs:8:1
+ |
+LL | impl Write for &mut [u8] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_write`
--> $DIR/issue-90528-unsizing-suggestion-4.rs:10:24
|
@@ -44,7 +52,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Write` is implemented for `&mut [u8]`
+help: the trait `Write` is implemented for `&mut [u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-4.rs:8:1
+ |
+LL | impl Write for &mut [u8] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_write`
--> $DIR/issue-90528-unsizing-suggestion-4.rs:10:24
|
@@ -63,7 +75,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Write` is implemented for `&mut [u8]`
+help: the trait `Write` is implemented for `&mut [u8]`
+ --> $DIR/issue-90528-unsizing-suggestion-4.rs:8:1
+ |
+LL | impl Write for &mut [u8] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `wants_write`
--> $DIR/issue-90528-unsizing-suggestion-4.rs:10:24
|
diff --git a/tests/ui/errors/trait-bound-error-spans/blame-trait-error.stderr b/tests/ui/errors/trait-bound-error-spans/blame-trait-error.stderr
index b221195..a28b28c 100644
--- a/tests/ui/errors/trait-bound-error-spans/blame-trait-error.stderr
+++ b/tests/ui/errors/trait-bound-error-spans/blame-trait-error.stderr
@@ -39,7 +39,11 @@
| required by a bound introduced by this call
|
= help: the trait `Iterator` is not implemented for `()`
- = help: the trait `T1` is implemented for `Option<It>`
+help: the trait `T1` is implemented for `Option<It>`
+ --> $DIR/blame-trait-error.rs:21:1
+ |
+LL | impl<It: Iterator> T1 for Option<It> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required for `Option<()>` to implement `T1`
--> $DIR/blame-trait-error.rs:21:20
|
diff --git a/tests/ui/feature-gates/feature-gate-trivial_bounds.stderr b/tests/ui/feature-gates/feature-gate-trivial_bounds.stderr
index 7d9c5b8..10a7498 100644
--- a/tests/ui/feature-gates/feature-gate-trivial_bounds.stderr
+++ b/tests/ui/feature-gates/feature-gate-trivial_bounds.stderr
@@ -4,7 +4,11 @@
LL | enum E where i32: Foo { V }
| ^^^^^^^^ the trait `Foo` is not implemented for `i32`
|
- = help: the trait `Foo` is implemented for `()`
+help: the trait `Foo` is implemented for `()`
+ --> $DIR/feature-gate-trivial_bounds.rs:20:1
+ |
+LL | impl Foo for () where i32: Foo {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: see issue #48214
help: add `#![feature(trivial_bounds)]` to the crate attributes to enable
|
@@ -17,7 +21,11 @@
LL | struct S where i32: Foo;
| ^^^^^^^^ the trait `Foo` is not implemented for `i32`
|
- = help: the trait `Foo` is implemented for `()`
+help: the trait `Foo` is implemented for `()`
+ --> $DIR/feature-gate-trivial_bounds.rs:20:1
+ |
+LL | impl Foo for () where i32: Foo {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: see issue #48214
help: add `#![feature(trivial_bounds)]` to the crate attributes to enable
|
@@ -30,7 +38,11 @@
LL | trait T where i32: Foo {}
| ^^^^^^^^ the trait `Foo` is not implemented for `i32`
|
- = help: the trait `Foo` is implemented for `()`
+help: the trait `Foo` is implemented for `()`
+ --> $DIR/feature-gate-trivial_bounds.rs:20:1
+ |
+LL | impl Foo for () where i32: Foo {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: see issue #48214
help: add `#![feature(trivial_bounds)]` to the crate attributes to enable
|
@@ -43,7 +55,11 @@
LL | union U where i32: Foo { f: i32 }
| ^^^^^^^^ the trait `Foo` is not implemented for `i32`
|
- = help: the trait `Foo` is implemented for `()`
+help: the trait `Foo` is implemented for `()`
+ --> $DIR/feature-gate-trivial_bounds.rs:20:1
+ |
+LL | impl Foo for () where i32: Foo {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: see issue #48214
help: add `#![feature(trivial_bounds)]` to the crate attributes to enable
|
@@ -56,7 +72,11 @@
LL | impl Foo for () where i32: Foo {
| ^^^^^^^^ the trait `Foo` is not implemented for `i32`
|
- = help: the trait `Foo` is implemented for `()`
+help: the trait `Foo` is implemented for `()`
+ --> $DIR/feature-gate-trivial_bounds.rs:20:1
+ |
+LL | impl Foo for () where i32: Foo {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: see issue #48214
help: add `#![feature(trivial_bounds)]` to the crate attributes to enable
|
@@ -69,7 +89,11 @@
LL | fn f() where i32: Foo
| ^^^^^^^^ the trait `Foo` is not implemented for `i32`
|
- = help: the trait `Foo` is implemented for `()`
+help: the trait `Foo` is implemented for `()`
+ --> $DIR/feature-gate-trivial_bounds.rs:20:1
+ |
+LL | impl Foo for () where i32: Foo {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: see issue #48214
help: add `#![feature(trivial_bounds)]` to the crate attributes to enable
|
diff --git a/tests/ui/generic-associated-types/bugs/issue-88382.stderr b/tests/ui/generic-associated-types/bugs/issue-88382.stderr
index 0f5e394..ce20a4e 100644
--- a/tests/ui/generic-associated-types/bugs/issue-88382.stderr
+++ b/tests/ui/generic-associated-types/bugs/issue-88382.stderr
@@ -5,7 +5,11 @@
| ^^^^ cannot infer type of the type parameter `I` declared on the function `test`
|
= note: cannot satisfy `_: Iterable`
- = help: the trait `Iterable` is implemented for `SomeImplementation`
+help: the trait `Iterable` is implemented for `SomeImplementation`
+ --> $DIR/issue-88382.rs:13:1
+ |
+LL | impl Iterable for SomeImplementation {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `test`
--> $DIR/issue-88382.rs:29:16
|
diff --git a/tests/ui/generic-associated-types/type-param-defaults.stderr b/tests/ui/generic-associated-types/type-param-defaults.stderr
index d9872da..87e9a4d7 100644
--- a/tests/ui/generic-associated-types/type-param-defaults.stderr
+++ b/tests/ui/generic-associated-types/type-param-defaults.stderr
@@ -42,7 +42,11 @@
LL | foo::<()>();
| ^^ the trait `Other` is not implemented for `u64`
|
- = help: the trait `Other` is implemented for `u32`
+help: the trait `Other` is implemented for `u32`
+ --> $DIR/type-param-defaults.rs:21:1
+ |
+LL | impl Other for u32 {}
+ | ^^^^^^^^^^^^^^^^^^
note: required by a bound in `foo`
--> $DIR/type-param-defaults.rs:26:15
|
diff --git a/tests/ui/generic-const-items/unsatisfied-bounds.stderr b/tests/ui/generic-const-items/unsatisfied-bounds.stderr
index de252b8..dc243e3 100644
--- a/tests/ui/generic-const-items/unsatisfied-bounds.stderr
+++ b/tests/ui/generic-const-items/unsatisfied-bounds.stderr
@@ -16,8 +16,9 @@
LL | let () = K::<()>;
| ^^ the trait `From<()>` is not implemented for `Infallible`
|
- = help: the trait `From<()>` is not implemented for `Infallible`
- but trait `From<!>` is implemented for it
+help: the trait `From<()>` is not implemented for `Infallible`
+ but trait `From<!>` is implemented for it
+ --> $SRC_DIR/core/src/convert/mod.rs:LL:COL
= help: for that trait implementation, expected `!`, found `()`
note: required by a bound in `K`
--> $DIR/unsatisfied-bounds.rs:12:17
@@ -49,8 +50,9 @@
LL | let _ = <() as Trait<&'static str>>::B::<()>;
| ^^ the trait `From<()>` is not implemented for `Infallible`
|
- = help: the trait `From<()>` is not implemented for `Infallible`
- but trait `From<!>` is implemented for it
+help: the trait `From<()>` is not implemented for `Infallible`
+ but trait `From<!>` is implemented for it
+ --> $SRC_DIR/core/src/convert/mod.rs:LL:COL
= help: for that trait implementation, expected `!`, found `()`
note: required by a bound in `Trait::B`
--> $DIR/unsatisfied-bounds.rs:21:21
diff --git a/tests/ui/impl-trait/diagnostics/highlight-difference-between-expected-trait-and-found-trait.svg b/tests/ui/impl-trait/diagnostics/highlight-difference-between-expected-trait-and-found-trait.svg
index 8c2713c..6e68356 100644
--- a/tests/ui/impl-trait/diagnostics/highlight-difference-between-expected-trait-and-found-trait.svg
+++ b/tests/ui/impl-trait/diagnostics/highlight-difference-between-expected-trait-and-found-trait.svg
@@ -1,8 +1,9 @@
-<svg width="1096px" height="398px" xmlns="http://www.w3.org/2000/svg">
+<svg width="1188px" height="470px" xmlns="http://www.w3.org/2000/svg">
<style>
.fg { fill: #AAAAAA }
.bg { fill: #000000 }
.fg-bright-blue { fill: #5555FF }
+ .fg-bright-cyan { fill: #55FFFF }
.fg-bright-green { fill: #55FF55 }
.fg-bright-red { fill: #FF5555 }
.fg-magenta { fill: #AA00AA }
@@ -37,32 +38,40 @@
</tspan>
<tspan x="10px" y="154px"><tspan> </tspan><tspan class="fg-bright-blue bold">|</tspan>
</tspan>
- <tspan x="10px" y="172px"><tspan> </tspan><tspan class="fg-bright-blue bold">= </tspan><tspan class="bold">help</tspan><tspan>: the trait `Bar<</tspan><tspan class="fg-magenta bold">i32</tspan><tspan>>` </tspan><tspan class="fg-magenta bold">is not</tspan><tspan> implemented for `Struct`</tspan>
+ <tspan x="10px" y="172px"><tspan class="fg-bright-cyan bold">help</tspan><tspan>: the trait `Bar<</tspan><tspan class="fg-magenta bold">i32</tspan><tspan>>` </tspan><tspan class="fg-magenta bold">is not</tspan><tspan> implemented for `Struct`</tspan>
</tspan>
- <tspan x="10px" y="190px"><tspan> but trait `Bar<</tspan><tspan class="fg-magenta bold">()</tspan><tspan>>` </tspan><tspan class="fg-magenta bold">is</tspan><tspan> implemented for it</tspan>
+ <tspan x="10px" y="190px"><tspan> but trait `Bar<</tspan><tspan class="fg-magenta bold">()</tspan><tspan>>` </tspan><tspan class="fg-magenta bold">is</tspan><tspan> implemented for it</tspan>
</tspan>
- <tspan x="10px" y="208px"><tspan> </tspan><tspan class="fg-bright-blue bold">= </tspan><tspan class="bold">help</tspan><tspan>: for that trait implementation, expected `</tspan><tspan class="fg-magenta bold">()</tspan><tspan>`, found `</tspan><tspan class="fg-magenta bold">i32</tspan><tspan>`</tspan>
+ <tspan x="10px" y="208px"><tspan> </tspan><tspan class="fg-bright-blue bold">--> </tspan><tspan>$DIR/highlight-difference-between-expected-trait-and-found-trait.rs:13:1</tspan>
</tspan>
- <tspan x="10px" y="226px"><tspan class="fg-bright-green bold">note</tspan><tspan>: required for `Struct` to implement `Foo<i32>`</tspan>
+ <tspan x="10px" y="226px"><tspan> </tspan><tspan class="fg-bright-blue bold">|</tspan>
</tspan>
- <tspan x="10px" y="244px"><tspan> </tspan><tspan class="fg-bright-blue bold">--> </tspan><tspan>$DIR/highlight-difference-between-expected-trait-and-found-trait.rs:10:12</tspan>
+ <tspan x="10px" y="244px"><tspan class="fg-bright-blue bold">LL</tspan><tspan> </tspan><tspan class="fg-bright-blue bold">|</tspan><tspan> impl<'a> Bar<()> for Struct {}</tspan>
</tspan>
- <tspan x="10px" y="262px"><tspan> </tspan><tspan class="fg-bright-blue bold">|</tspan>
+ <tspan x="10px" y="262px"><tspan> </tspan><tspan class="fg-bright-blue bold">|</tspan><tspan> </tspan><tspan class="fg-bright-cyan bold">^^^^^^^^^^^^^^^^^^^^^^^^^^^</tspan>
</tspan>
- <tspan x="10px" y="280px"><tspan class="fg-bright-blue bold">LL</tspan><tspan> </tspan><tspan class="fg-bright-blue bold">|</tspan><tspan> impl<T, K> Foo<K> for T where T: Bar<K></tspan>
+ <tspan x="10px" y="280px"><tspan> </tspan><tspan class="fg-bright-blue bold">= </tspan><tspan class="bold">help</tspan><tspan>: for that trait implementation, expected `</tspan><tspan class="fg-magenta bold">()</tspan><tspan>`, found `</tspan><tspan class="fg-magenta bold">i32</tspan><tspan>`</tspan>
</tspan>
- <tspan x="10px" y="298px"><tspan> </tspan><tspan class="fg-bright-blue bold">|</tspan><tspan> </tspan><tspan class="fg-bright-green bold">^^^^^^</tspan><tspan> </tspan><tspan class="fg-bright-green bold">^</tspan><tspan> </tspan><tspan class="fg-bright-blue bold">------</tspan><tspan> </tspan><tspan class="fg-bright-blue bold">unsatisfied trait bound introduced here</tspan>
+ <tspan x="10px" y="298px"><tspan class="fg-bright-green bold">note</tspan><tspan>: required for `Struct` to implement `Foo<i32>`</tspan>
</tspan>
- <tspan x="10px" y="316px">
+ <tspan x="10px" y="316px"><tspan> </tspan><tspan class="fg-bright-blue bold">--> </tspan><tspan>$DIR/highlight-difference-between-expected-trait-and-found-trait.rs:10:12</tspan>
</tspan>
- <tspan x="10px" y="334px"><tspan class="fg-bright-red bold">error</tspan><tspan class="bold">: aborting due to 1 previous error</tspan>
+ <tspan x="10px" y="334px"><tspan> </tspan><tspan class="fg-bright-blue bold">|</tspan>
</tspan>
- <tspan x="10px" y="352px">
+ <tspan x="10px" y="352px"><tspan class="fg-bright-blue bold">LL</tspan><tspan> </tspan><tspan class="fg-bright-blue bold">|</tspan><tspan> impl<T, K> Foo<K> for T where T: Bar<K></tspan>
</tspan>
- <tspan x="10px" y="370px"><tspan class="bold">For more information about this error, try `rustc --explain E0277`.</tspan>
+ <tspan x="10px" y="370px"><tspan> </tspan><tspan class="fg-bright-blue bold">|</tspan><tspan> </tspan><tspan class="fg-bright-green bold">^^^^^^</tspan><tspan> </tspan><tspan class="fg-bright-green bold">^</tspan><tspan> </tspan><tspan class="fg-bright-blue bold">------</tspan><tspan> </tspan><tspan class="fg-bright-blue bold">unsatisfied trait bound introduced here</tspan>
</tspan>
<tspan x="10px" y="388px">
</tspan>
+ <tspan x="10px" y="406px"><tspan class="fg-bright-red bold">error</tspan><tspan class="bold">: aborting due to 1 previous error</tspan>
+</tspan>
+ <tspan x="10px" y="424px">
+</tspan>
+ <tspan x="10px" y="442px"><tspan class="bold">For more information about this error, try `rustc --explain E0277`.</tspan>
+</tspan>
+ <tspan x="10px" y="460px">
+</tspan>
</text>
</svg>
diff --git a/tests/ui/impl-trait/equality.stderr b/tests/ui/impl-trait/equality.stderr
index 424d56f..c2b8891 100644
--- a/tests/ui/impl-trait/equality.stderr
+++ b/tests/ui/impl-trait/equality.stderr
@@ -30,11 +30,17 @@
| ^ no implementation for `u32 + impl Foo`
|
= help: the trait `Add<impl Foo>` is not implemented for `u32`
- = help: the following other types implement trait `Add<Rhs>`:
- `&u32` implements `Add<u32>`
- `&u32` implements `Add`
- `u32` implements `Add<&u32>`
- `u32` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&u32` implements `Add<u32>`
+ |
+ = note: `&u32` implements `Add`
+ |
+ = note: `u32` implements `Add<&u32>`
+ |
+ = note: `u32` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 2 previous errors; 1 warning emitted
diff --git a/tests/ui/impl-trait/in-bindings/trait-failure.stderr b/tests/ui/impl-trait/in-bindings/trait-failure.stderr
index 332cefd..1fa14f0 100644
--- a/tests/ui/impl-trait/in-bindings/trait-failure.stderr
+++ b/tests/ui/impl-trait/in-bindings/trait-failure.stderr
@@ -4,7 +4,11 @@
LL | let x: impl Foo = W(());
| ^^^ the trait `Foo` is not implemented for `()`
|
- = help: the trait `Foo` is implemented for `W<T>`
+help: the trait `Foo` is implemented for `W<T>`
+ --> $DIR/trait-failure.rs:6:1
+ |
+LL | impl<T> Foo for W<T> where T: Foo {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required for `W<()>` to implement `Foo`
--> $DIR/trait-failure.rs:6:9
|
@@ -17,7 +21,11 @@
LL | let x: W<impl Foo> = W(());
| ^^^ the trait `Foo` is not implemented for `()`
|
- = help: the trait `Foo` is implemented for `W<T>`
+help: the trait `Foo` is implemented for `W<T>`
+ --> $DIR/trait-failure.rs:6:1
+ |
+LL | impl<T> Foo for W<T> where T: Foo {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 2 previous errors
diff --git a/tests/ui/impl-trait/in-trait/cycle-effective-visibilities-during-dyn-compatibility-check.stderr b/tests/ui/impl-trait/in-trait/cycle-effective-visibilities-during-dyn-compatibility-check.stderr
index 61fe9432..155fbdc 100644
--- a/tests/ui/impl-trait/in-trait/cycle-effective-visibilities-during-dyn-compatibility-check.stderr
+++ b/tests/ui/impl-trait/in-trait/cycle-effective-visibilities-during-dyn-compatibility-check.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `MyTrait` is implemented for `Outer`
+help: the trait `MyTrait` is implemented for `Outer`
+ --> $DIR/cycle-effective-visibilities-during-dyn-compatibility-check.rs:10:1
+ |
+LL | impl MyTrait for Outer {
+ | ^^^^^^^^^^^^^^^^^^^^^^
error[E0038]: the trait `MyTrait` is not dyn compatible
--> $DIR/cycle-effective-visibilities-during-dyn-compatibility-check.rs:20:9
@@ -31,7 +35,11 @@
LL | MyTrait::foo(&self)
| ^^^^^^^^^^^^^^^^^^^ the trait `MyTrait` is not implemented for `&dyn MyTrait`
|
- = help: the trait `MyTrait` is implemented for `Outer`
+help: the trait `MyTrait` is implemented for `Outer`
+ --> $DIR/cycle-effective-visibilities-during-dyn-compatibility-check.rs:10:1
+ |
+LL | impl MyTrait for Outer {
+ | ^^^^^^^^^^^^^^^^^^^^^^
error[E0038]: the trait `MyTrait` is not dyn compatible
--> $DIR/cycle-effective-visibilities-during-dyn-compatibility-check.rs:16:6
diff --git a/tests/ui/impl-trait/in-trait/issue-102140.stderr b/tests/ui/impl-trait/in-trait/issue-102140.stderr
index dc3dcc1..45f1627 100644
--- a/tests/ui/impl-trait/in-trait/issue-102140.stderr
+++ b/tests/ui/impl-trait/in-trait/issue-102140.stderr
@@ -18,7 +18,11 @@
LL | MyTrait::foo(&self)
| ^^^^^^^^^^^^^^^^^^^ the trait `MyTrait` is not implemented for `&dyn MyTrait`
|
- = help: the trait `MyTrait` is implemented for `Outer`
+help: the trait `MyTrait` is implemented for `Outer`
+ --> $DIR/issue-102140.rs:12:1
+ |
+LL | impl MyTrait for Outer {
+ | ^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 2 previous errors
diff --git a/tests/ui/impl-trait/in-trait/return-dont-satisfy-bounds.stderr b/tests/ui/impl-trait/in-trait/return-dont-satisfy-bounds.stderr
index 374176f..c62e8db 100644
--- a/tests/ui/impl-trait/in-trait/return-dont-satisfy-bounds.stderr
+++ b/tests/ui/impl-trait/in-trait/return-dont-satisfy-bounds.stderr
@@ -13,7 +13,11 @@
LL | fn foo<F2: Foo<u8>>(self) -> impl Foo<u8> {
| ^^^^^^^^^^^^ the trait `Foo<char>` is not implemented for `impl Foo<u8>`
|
- = help: the trait `Foo<char>` is implemented for `Bar`
+help: the trait `Foo<char>` is implemented for `Bar`
+ --> $DIR/return-dont-satisfy-bounds.rs:7:1
+ |
+LL | impl Foo<char> for Bar {
+ | ^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `Foo::foo::{anon_assoc#0}`
--> $DIR/return-dont-satisfy-bounds.rs:2:30
|
@@ -29,8 +33,12 @@
LL | self
| ---- return type was inferred to be `Bar` here
|
- = help: the trait `Foo<u8>` is not implemented for `Bar`
- but trait `Foo<char>` is implemented for it
+help: the trait `Foo<u8>` is not implemented for `Bar`
+ but trait `Foo<char>` is implemented for it
+ --> $DIR/return-dont-satisfy-bounds.rs:7:1
+ |
+LL | impl Foo<char> for Bar {
+ | ^^^^^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `char`, found `u8`
error: aborting due to 3 previous errors
diff --git a/tests/ui/impl-trait/issues/issue-62742.stderr b/tests/ui/impl-trait/issues/issue-62742.stderr
index 7ded351..a1fedb8 100644
--- a/tests/ui/impl-trait/issues/issue-62742.stderr
+++ b/tests/ui/impl-trait/issues/issue-62742.stderr
@@ -4,8 +4,12 @@
LL | WrongImpl::foo(0i32);
| ^^^^^^^^^ unsatisfied trait bound
|
- = help: the trait `Raw<_>` is not implemented for `RawImpl<_>`
- but trait `Raw<[_]>` is implemented for it
+help: the trait `Raw<_>` is not implemented for `RawImpl<_>`
+ but trait `Raw<[_]>` is implemented for it
+ --> $DIR/issue-62742.rs:29:1
+ |
+LL | impl<T> Raw<[T]> for RawImpl<T> {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `SafeImpl`
--> $DIR/issue-62742.rs:33:35
|
@@ -43,8 +47,12 @@
LL | WrongImpl::<()>::foo(0i32);
| ^^^^^^^^^^^^^^^ unsatisfied trait bound
|
- = help: the trait `Raw<()>` is not implemented for `RawImpl<()>`
- but trait `Raw<[()]>` is implemented for it
+help: the trait `Raw<()>` is not implemented for `RawImpl<()>`
+ but trait `Raw<[()]>` is implemented for it
+ --> $DIR/issue-62742.rs:29:1
+ |
+LL | impl<T> Raw<[T]> for RawImpl<T> {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `[()]`, found `()`
note: required by a bound in `SafeImpl`
--> $DIR/issue-62742.rs:33:35
diff --git a/tests/ui/impl-trait/nested-rpit-hrtb.stderr b/tests/ui/impl-trait/nested-rpit-hrtb.stderr
index 2e95ef3..a15f400 100644
--- a/tests/ui/impl-trait/nested-rpit-hrtb.stderr
+++ b/tests/ui/impl-trait/nested-rpit-hrtb.stderr
@@ -83,8 +83,12 @@
LL | fn one_hrtb_mention_fn_trait_param_uses<'b>() -> impl for<'a> Bar<'a, Assoc = impl Qux<'b>> {}
| ^^^^^^^^^^^^ the trait `for<'a> Qux<'b>` is not implemented for `&'a ()`
|
- = help: the trait `Qux<'b>` is not implemented for `&'a ()`
- but trait `Qux<'_>` is implemented for `()`
+help: the trait `Qux<'b>` is not implemented for `&'a ()`
+ but trait `Qux<'_>` is implemented for `()`
+ --> $DIR/nested-rpit-hrtb.rs:22:1
+ |
+LL | impl Qux<'_> for () {}
+ | ^^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `()`, found `&'a ()`
error: implementation of `Bar` is not general enough
@@ -102,8 +106,12 @@
LL | fn two_htrb_trait_param_uses() -> impl for<'a> Bar<'a, Assoc = impl for<'b> Qux<'b>> {}
| ^^^^^^^^^^^^^^^^^^^^ the trait `for<'a, 'b> Qux<'b>` is not implemented for `&'a ()`
|
- = help: the trait `Qux<'b>` is not implemented for `&'a ()`
- but trait `Qux<'_>` is implemented for `()`
+help: the trait `Qux<'b>` is not implemented for `&'a ()`
+ but trait `Qux<'_>` is implemented for `()`
+ --> $DIR/nested-rpit-hrtb.rs:22:1
+ |
+LL | impl Qux<'_> for () {}
+ | ^^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `()`, found `&'a ()`
error: aborting due to 9 previous errors
diff --git a/tests/ui/impl-trait/nested_impl_trait.stderr b/tests/ui/impl-trait/nested_impl_trait.stderr
index d01c596..406f219 100644
--- a/tests/ui/impl-trait/nested_impl_trait.stderr
+++ b/tests/ui/impl-trait/nested_impl_trait.stderr
@@ -50,7 +50,8 @@
| |
| the trait `From<impl Into<u32>>` is not implemented for `impl Debug`
|
- = help: the trait `Into<U>` is implemented for `T`
+help: the trait `Into<U>` is implemented for `T`
+ --> $SRC_DIR/core/src/convert/mod.rs:LL:COL
= note: required for `impl Into<u32>` to implement `Into<impl Debug>`
error[E0277]: the trait bound `impl Debug: From<impl Into<u32>>` is not satisfied
@@ -61,7 +62,8 @@
| |
| the trait `From<impl Into<u32>>` is not implemented for `impl Debug`
|
- = help: the trait `Into<U>` is implemented for `T`
+help: the trait `Into<U>` is implemented for `T`
+ --> $SRC_DIR/core/src/convert/mod.rs:LL:COL
= note: required for `impl Into<u32>` to implement `Into<impl Debug>`
error: aborting due to 7 previous errors
diff --git a/tests/ui/impl-trait/non-defining-uses/avoid-inference-constraints-from-blanket-3.stderr b/tests/ui/impl-trait/non-defining-uses/avoid-inference-constraints-from-blanket-3.stderr
index a5d19b4..f4b60aa 100644
--- a/tests/ui/impl-trait/non-defining-uses/avoid-inference-constraints-from-blanket-3.stderr
+++ b/tests/ui/impl-trait/non-defining-uses/avoid-inference-constraints-from-blanket-3.stderr
@@ -4,8 +4,12 @@
LL | impls_trait(x);
| ^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `String`
|
- = help: the trait `Trait<u32>` is not implemented for `String`
- but trait `Trait<u64>` is implemented for it
+help: the trait `Trait<u32>` is not implemented for `String`
+ but trait `Trait<u64>` is implemented for it
+ --> $DIR/avoid-inference-constraints-from-blanket-3.rs:17:1
+ |
+LL | impl Trait<u64> for String {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `u64`, found `u32`
note: required for `String` to implement `Trait<u32>`
--> $DIR/avoid-inference-constraints-from-blanket-3.rs:16:15
diff --git a/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration.stderr b/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration.stderr
index da196ae..51e05fd 100644
--- a/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration.stderr
+++ b/tests/ui/impl-trait/recursive-type-alias-impl-trait-declaration.stderr
@@ -12,7 +12,11 @@
|
LL | struct Bar;
| ^^^^^^^^^^
- = help: the trait `PartialEq<(Bar, i32)>` is implemented for `Bar`
+help: the trait `PartialEq<(Bar, i32)>` is implemented for `Bar`
+ --> $DIR/recursive-type-alias-impl-trait-declaration.rs:7:1
+ |
+LL | impl PartialEq<(Bar, i32)> for Bar {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 1 previous error
diff --git a/tests/ui/impl-trait/unsized_coercion3.next.stderr b/tests/ui/impl-trait/unsized_coercion3.next.stderr
index 28771e0..a480a69 100644
--- a/tests/ui/impl-trait/unsized_coercion3.next.stderr
+++ b/tests/ui/impl-trait/unsized_coercion3.next.stderr
@@ -4,7 +4,11 @@
LL | let x = hello();
| ^^^^^^^ the trait `Trait` is not implemented for `dyn Send`
|
- = help: the trait `Trait` is implemented for `u32`
+help: the trait `Trait` is implemented for `u32`
+ --> $DIR/unsized_coercion3.rs:9:1
+ |
+LL | impl Trait for u32 {}
+ | ^^^^^^^^^^^^^^^^^^
error: aborting due to 1 previous error
diff --git a/tests/ui/indexing/index-help.stderr b/tests/ui/indexing/index-help.stderr
index ac79e3f..8fc91c1 100644
--- a/tests/ui/indexing/index-help.stderr
+++ b/tests/ui/indexing/index-help.stderr
@@ -5,9 +5,13 @@
| ^^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[{integer}]>` is not implemented for `i32`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `Vec<{integer}>` to implement `Index<i32>`
error: aborting due to 1 previous error
diff --git a/tests/ui/indexing/indexing-integral-types.stderr b/tests/ui/indexing/indexing-integral-types.stderr
index b63991e..3dfc5f5 100644
--- a/tests/ui/indexing/indexing-integral-types.stderr
+++ b/tests/ui/indexing/indexing-integral-types.stderr
@@ -5,9 +5,13 @@
| ^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[isize]>` is not implemented for `u8`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `Vec<isize>` to implement `Index<u8>`
error[E0277]: the type `[isize]` cannot be indexed by `i8`
@@ -17,9 +21,13 @@
| ^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[isize]>` is not implemented for `i8`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `Vec<isize>` to implement `Index<i8>`
error[E0277]: the type `[isize]` cannot be indexed by `u32`
@@ -29,9 +37,13 @@
| ^^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[isize]>` is not implemented for `u32`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `Vec<isize>` to implement `Index<u32>`
error[E0277]: the type `[isize]` cannot be indexed by `i32`
@@ -41,9 +53,13 @@
| ^^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[isize]>` is not implemented for `i32`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `Vec<isize>` to implement `Index<i32>`
error[E0277]: the type `[u8]` cannot be indexed by `u8`
@@ -53,9 +69,13 @@
| ^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[u8]>` is not implemented for `u8`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `[u8]` to implement `Index<u8>`
error[E0277]: the type `[u8]` cannot be indexed by `i8`
@@ -65,9 +85,13 @@
| ^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[u8]>` is not implemented for `i8`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `[u8]` to implement `Index<i8>`
error[E0277]: the type `[u8]` cannot be indexed by `u32`
@@ -77,9 +101,13 @@
| ^^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[u8]>` is not implemented for `u32`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `[u8]` to implement `Index<u32>`
error[E0277]: the type `[u8]` cannot be indexed by `i32`
@@ -89,9 +117,13 @@
| ^^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[u8]>` is not implemented for `i32`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `[u8]` to implement `Index<i32>`
error: aborting due to 8 previous errors
diff --git a/tests/ui/indexing/indexing-requires-a-uint.stderr b/tests/ui/indexing/indexing-requires-a-uint.stderr
index 62a1ca3..7bfb678 100644
--- a/tests/ui/indexing/indexing-requires-a-uint.stderr
+++ b/tests/ui/indexing/indexing-requires-a-uint.stderr
@@ -5,9 +5,13 @@
| ^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[{integer}]>` is not implemented for `u8`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `[{integer}]` to implement `Index<u8>`
= note: 1 redundant requirement hidden
= note: required for `[{integer}; 1]` to implement `Index<u8>`
diff --git a/tests/ui/indexing/point-at-index-for-obligation-failure.stderr b/tests/ui/indexing/point-at-index-for-obligation-failure.stderr
index 0752231..a221e43 100644
--- a/tests/ui/indexing/point-at-index-for-obligation-failure.stderr
+++ b/tests/ui/indexing/point-at-index-for-obligation-failure.stderr
@@ -4,8 +4,9 @@
LL | &s
| ^^ the trait `Borrow<&str>` is not implemented for `String`
|
- = help: the trait `Borrow<&_>` is not implemented for `String`
- but trait `Borrow<_>` is implemented for it
+help: the trait `Borrow<&_>` is not implemented for `String`
+ but trait `Borrow<_>` is implemented for it
+ --> $SRC_DIR/alloc/src/str.rs:LL:COL
= help: for that trait implementation, expected `str`, found `&str`
= note: required for `HashMap<String, String>` to implement `Index<&&str>`
diff --git a/tests/ui/issues/issue-34334.stderr b/tests/ui/issues/issue-34334.stderr
index 6562ccf..6bf6732 100644
--- a/tests/ui/issues/issue-34334.stderr
+++ b/tests/ui/issues/issue-34334.stderr
@@ -17,8 +17,9 @@
LL | let sr2: Vec<(u32, _, _)> = sr.iter().map(|(faction, th_sender, th_receiver)| {}).collect();
| ^^^^^^^ value of type `Vec<(u32, _, _)>` cannot be built from `std::iter::Iterator<Item=()>`
|
- = help: the trait `FromIterator<()>` is not implemented for `Vec<(u32, _, _)>`
- but trait `FromIterator<(u32, _, _)>` is implemented for it
+help: the trait `FromIterator<()>` is not implemented for `Vec<(u32, _, _)>`
+ but trait `FromIterator<(u32, _, _)>` is implemented for it
+ --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
= help: for that trait implementation, expected `(u32, _, _)`, found `()`
note: the method call chain might not have had the expected associated types
--> $DIR/issue-34334.rs:5:43
diff --git a/tests/ui/issues/issue-45801.stderr b/tests/ui/issues/issue-45801.stderr
index 9f7c822..8a4ac85 100644
--- a/tests/ui/issues/issue-45801.stderr
+++ b/tests/ui/issues/issue-45801.stderr
@@ -4,8 +4,12 @@
LL | req.get_ref::<Params>();
| ^^^^^^^ unsatisfied trait bound
|
- = help: the trait `Plugin<i32>` is not implemented for `Params`
- but trait `Plugin<Foo>` is implemented for it
+help: the trait `Plugin<i32>` is not implemented for `Params`
+ but trait `Plugin<Foo>` is implemented for it
+ --> $DIR/issue-45801.rs:14:1
+ |
+LL | impl Plugin<Foo> for Params {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `Foo`, found `i32`
error: aborting due to 1 previous error
diff --git a/tests/ui/iterators/invalid-iterator-chain-fixable.stderr b/tests/ui/iterators/invalid-iterator-chain-fixable.stderr
index 09439fe..bef4cb6 100644
--- a/tests/ui/iterators/invalid-iterator-chain-fixable.stderr
+++ b/tests/ui/iterators/invalid-iterator-chain-fixable.stderr
@@ -6,8 +6,9 @@
LL | i.collect()
| ^^^^^^^ value of type `Vec<X>` cannot be built from `std::iter::Iterator<Item=&X>`
|
- = help: the trait `FromIterator<&_>` is not implemented for `Vec<X>`
- but trait `FromIterator<_>` is implemented for it
+help: the trait `FromIterator<&_>` is not implemented for `Vec<X>`
+ but trait `FromIterator<_>` is implemented for it
+ --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
= help: for that trait implementation, expected `X`, found `&X`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain-fixable.rs:5:26
@@ -32,9 +33,12 @@
| required by a bound introduced by this call
|
= help: the trait `Sum<()>` is not implemented for `i32`
- = help: the following other types implement trait `Sum<A>`:
- `i32` implements `Sum<&i32>`
- `i32` implements `Sum`
+help: the following other types implement trait `Sum<A>`
+ --> $SRC_DIR/core/src/iter/traits/accum.rs:LL:COL
+ |
+ = note: `i32` implements `Sum<&i32>`
+ |
+ = note: `i32` implements `Sum`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain-fixable.rs:14:10
|
@@ -50,6 +54,7 @@
| |__________^ `Iterator::Item` changed to `()` here
note: required by a bound in `std::iter::Iterator::sum`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+ = note: this error originates in the macro `integer_sum_product` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider removing this semicolon
|
LL - a + b;
@@ -65,9 +70,12 @@
| required by a bound introduced by this call
|
= help: the trait `Sum<()>` is not implemented for `i32`
- = help: the following other types implement trait `Sum<A>`:
- `i32` implements `Sum<&i32>`
- `i32` implements `Sum`
+help: the following other types implement trait `Sum<A>`
+ --> $SRC_DIR/core/src/iter/traits/accum.rs:LL:COL
+ |
+ = note: `i32` implements `Sum<&i32>`
+ |
+ = note: `i32` implements `Sum`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain-fixable.rs:23:14
|
@@ -83,6 +91,7 @@
| -------------- `Iterator::Item` remains `()` here
note: required by a bound in `std::iter::Iterator::sum`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+ = note: this error originates in the macro `integer_sum_product` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider removing this semicolon
|
LL - .map(|x| { x; })
@@ -98,9 +107,12 @@
| required by a bound introduced by this call
|
= help: the trait `Sum<()>` is not implemented for `i32`
- = help: the following other types implement trait `Sum<A>`:
- `i32` implements `Sum<&i32>`
- `i32` implements `Sum`
+help: the following other types implement trait `Sum<A>`
+ --> $SRC_DIR/core/src/iter/traits/accum.rs:LL:COL
+ |
+ = note: `i32` implements `Sum<&i32>`
+ |
+ = note: `i32` implements `Sum`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain-fixable.rs:27:38
|
@@ -111,6 +123,7 @@
| this expression has type `Vec<{integer}>`
note: required by a bound in `std::iter::Iterator::sum`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+ = note: this error originates in the macro `integer_sum_product` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider removing this semicolon
|
LL - println!("{}", vec![0, 1].iter().map(|x| { x; }).sum::<i32>());
@@ -123,8 +136,9 @@
LL | let g: Vec<i32> = f.collect();
| ^^^^^^^ value of type `Vec<i32>` cannot be built from `std::iter::Iterator<Item=()>`
|
- = help: the trait `FromIterator<()>` is not implemented for `Vec<i32>`
- but trait `FromIterator<i32>` is implemented for it
+help: the trait `FromIterator<()>` is not implemented for `Vec<i32>`
+ but trait `FromIterator<i32>` is implemented for it
+ --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
= help: for that trait implementation, expected `i32`, found `()`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain-fixable.rs:32:15
diff --git a/tests/ui/iterators/invalid-iterator-chain-with-int-infer.stderr b/tests/ui/iterators/invalid-iterator-chain-with-int-infer.stderr
index 1f1f7c9..638287e 100644
--- a/tests/ui/iterators/invalid-iterator-chain-with-int-infer.stderr
+++ b/tests/ui/iterators/invalid-iterator-chain-with-int-infer.stderr
@@ -7,9 +7,12 @@
| required by a bound introduced by this call
|
= help: the trait `Sum<{integer}>` is not implemented for `f32`
- = help: the following other types implement trait `Sum<A>`:
- `f32` implements `Sum<&f32>`
- `f32` implements `Sum`
+help: the following other types implement trait `Sum<A>`
+ --> $SRC_DIR/core/src/iter/traits/accum.rs:LL:COL
+ |
+ = note: `f32` implements `Sum<&f32>`
+ |
+ = note: `f32` implements `Sum`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain-with-int-infer.rs:2:29
|
@@ -20,6 +23,7 @@
| this expression has type `Option<()>`
note: required by a bound in `std::iter::Iterator::sum`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+ = note: this error originates in the macro `float_sum_product` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 1 previous error
diff --git a/tests/ui/iterators/invalid-iterator-chain.stderr b/tests/ui/iterators/invalid-iterator-chain.stderr
index b810e06..0fd9d39 100644
--- a/tests/ui/iterators/invalid-iterator-chain.stderr
+++ b/tests/ui/iterators/invalid-iterator-chain.stderr
@@ -6,8 +6,9 @@
LL | i.collect()
| ^^^^^^^ value of type `Vec<X>` cannot be built from `std::iter::Iterator<Item=&X>`
|
- = help: the trait `FromIterator<&_>` is not implemented for `Vec<X>`
- but trait `FromIterator<_>` is implemented for it
+help: the trait `FromIterator<&_>` is not implemented for `Vec<X>`
+ but trait `FromIterator<_>` is implemented for it
+ --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
= help: for that trait implementation, expected `X`, found `&X`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain.rs:4:26
@@ -32,9 +33,12 @@
| required by a bound introduced by this call
|
= help: the trait `Sum<()>` is not implemented for `i32`
- = help: the following other types implement trait `Sum<A>`:
- `i32` implements `Sum<&i32>`
- `i32` implements `Sum`
+help: the following other types implement trait `Sum<A>`
+ --> $SRC_DIR/core/src/iter/traits/accum.rs:LL:COL
+ |
+ = note: `i32` implements `Sum<&i32>`
+ |
+ = note: `i32` implements `Sum`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain.rs:12:10
|
@@ -49,6 +53,7 @@
| |__________^ `Iterator::Item` changed to `()` here
note: required by a bound in `std::iter::Iterator::sum`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+ = note: this error originates in the macro `integer_sum_product` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider removing this semicolon
|
LL - a + b;
@@ -64,9 +69,12 @@
| required by a bound introduced by this call
|
= help: the trait `Sum<()>` is not implemented for `i32`
- = help: the following other types implement trait `Sum<A>`:
- `i32` implements `Sum<&i32>`
- `i32` implements `Sum`
+help: the following other types implement trait `Sum<A>`
+ --> $SRC_DIR/core/src/iter/traits/accum.rs:LL:COL
+ |
+ = note: `i32` implements `Sum<&i32>`
+ |
+ = note: `i32` implements `Sum`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain.rs:25:14
|
@@ -88,6 +96,7 @@
| ^^^^^^^^^^^^^^^ `Iterator::Item` changed to `()` here
note: required by a bound in `std::iter::Iterator::sum`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+ = note: this error originates in the macro `integer_sum_product` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider removing this semicolon
|
LL - .map(|x| { x; })
@@ -103,9 +112,12 @@
| required by a bound introduced by this call
|
= help: the trait `Sum<f64>` is not implemented for `i32`
- = help: the following other types implement trait `Sum<A>`:
- `i32` implements `Sum<&i32>`
- `i32` implements `Sum`
+help: the following other types implement trait `Sum<A>`
+ --> $SRC_DIR/core/src/iter/traits/accum.rs:LL:COL
+ |
+ = note: `i32` implements `Sum<&i32>`
+ |
+ = note: `i32` implements `Sum`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain.rs:33:14
|
@@ -123,6 +135,7 @@
| -------------------- `Iterator::Item` remains `f64` here
note: required by a bound in `std::iter::Iterator::sum`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+ = note: this error originates in the macro `integer_sum_product` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: a value of type `i32` cannot be made by summing an iterator over elements of type `()`
--> $DIR/invalid-iterator-chain.rs:38:60
@@ -133,9 +146,12 @@
| required by a bound introduced by this call
|
= help: the trait `Sum<()>` is not implemented for `i32`
- = help: the following other types implement trait `Sum<A>`:
- `i32` implements `Sum<&i32>`
- `i32` implements `Sum`
+help: the following other types implement trait `Sum<A>`
+ --> $SRC_DIR/core/src/iter/traits/accum.rs:LL:COL
+ |
+ = note: `i32` implements `Sum<&i32>`
+ |
+ = note: `i32` implements `Sum`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain.rs:38:38
|
@@ -146,6 +162,7 @@
| this expression has type `Vec<{integer}>`
note: required by a bound in `std::iter::Iterator::sum`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+ = note: this error originates in the macro `integer_sum_product` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider removing this semicolon
|
LL - println!("{}", vec![0, 1].iter().map(|x| { x; }).sum::<i32>());
@@ -161,9 +178,12 @@
| required by a bound introduced by this call
|
= help: the trait `Sum<&()>` is not implemented for `i32`
- = help: the following other types implement trait `Sum<A>`:
- `i32` implements `Sum<&i32>`
- `i32` implements `Sum`
+help: the following other types implement trait `Sum<A>`
+ --> $SRC_DIR/core/src/iter/traits/accum.rs:LL:COL
+ |
+ = note: `i32` implements `Sum<&i32>`
+ |
+ = note: `i32` implements `Sum`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain.rs:39:33
|
@@ -173,6 +193,7 @@
| this expression has type `Vec<()>`
note: required by a bound in `std::iter::Iterator::sum`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+ = note: this error originates in the macro `integer_sum_product` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: a value of type `Vec<i32>` cannot be built from an iterator over elements of type `()`
--> $DIR/invalid-iterator-chain.rs:48:25
@@ -180,8 +201,9 @@
LL | let g: Vec<i32> = f.collect();
| ^^^^^^^ value of type `Vec<i32>` cannot be built from `std::iter::Iterator<Item=()>`
|
- = help: the trait `FromIterator<()>` is not implemented for `Vec<i32>`
- but trait `FromIterator<i32>` is implemented for it
+help: the trait `FromIterator<()>` is not implemented for `Vec<i32>`
+ but trait `FromIterator<i32>` is implemented for it
+ --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
= help: for that trait implementation, expected `i32`, found `()`
note: the method call chain might not have had the expected associated types
--> $DIR/invalid-iterator-chain.rs:44:15
diff --git a/tests/ui/kindck/kindck-impl-type-params.stderr b/tests/ui/kindck/kindck-impl-type-params.stderr
index d375aa9..0c9ab13 100644
--- a/tests/ui/kindck/kindck-impl-type-params.stderr
+++ b/tests/ui/kindck/kindck-impl-type-params.stderr
@@ -80,7 +80,11 @@
LL | let a = t as Box<dyn Gettable<String>>;
| ^ the trait `Copy` is not implemented for `String`
|
- = help: the trait `Gettable<T>` is implemented for `S<T>`
+help: the trait `Gettable<T>` is implemented for `S<T>`
+ --> $DIR/kindck-impl-type-params.rs:12:1
+ |
+LL | impl<T: Send + Copy + 'static> Gettable<T> for S<T> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required for `S<String>` to implement `Gettable<String>`
--> $DIR/kindck-impl-type-params.rs:12:32
|
@@ -96,7 +100,11 @@
LL | let a: Box<dyn Gettable<Foo>> = t;
| ^ the trait `Copy` is not implemented for `Foo`
|
- = help: the trait `Gettable<T>` is implemented for `S<T>`
+help: the trait `Gettable<T>` is implemented for `S<T>`
+ --> $DIR/kindck-impl-type-params.rs:12:1
+ |
+LL | impl<T: Send + Copy + 'static> Gettable<T> for S<T> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required for `S<Foo>` to implement `Gettable<Foo>`
--> $DIR/kindck-impl-type-params.rs:12:32
|
diff --git a/tests/ui/linkage-attr/raw-dylib/windows/dlltool-failed.stderr b/tests/ui/linkage-attr/raw-dylib/windows/dlltool-failed.stderr
index 5f3c29c..6fcb07c 100644
--- a/tests/ui/linkage-attr/raw-dylib/windows/dlltool-failed.stderr
+++ b/tests/ui/linkage-attr/raw-dylib/windows/dlltool-failed.stderr
@@ -1,6 +1,7 @@
error: dlltool could not create import library with $DLLTOOL -d $DEF_FILE -D foo.dll -l $LIB_FILE $TARGET_MACHINE $ASM_FLAGS --no-leading-underscore $TEMP_PREFIX:
$DLLTOOL: Syntax error in def file $DEF_FILE:1␍
+
error: aborting due to 1 previous error
diff --git a/tests/ui/mismatched_types/binops.stderr b/tests/ui/mismatched_types/binops.stderr
index c0cac53..504b44d 100644
--- a/tests/ui/mismatched_types/binops.stderr
+++ b/tests/ui/mismatched_types/binops.stderr
@@ -23,11 +23,17 @@
| ^ no implementation for `usize - Option<{integer}>`
|
= help: the trait `Sub<Option<{integer}>>` is not implemented for `usize`
- = help: the following other types implement trait `Sub<Rhs>`:
- `&usize` implements `Sub<usize>`
- `&usize` implements `Sub`
- `usize` implements `Sub<&usize>`
- `usize` implements `Sub`
+help: the following other types implement trait `Sub<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&usize` implements `Sub<usize>`
+ |
+ = note: `&usize` implements `Sub`
+ |
+ = note: `usize` implements `Sub<&usize>`
+ |
+ = note: `usize` implements `Sub`
+ = note: this error originates in the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: cannot multiply `{integer}` by `()`
--> $DIR/binops.rs:4:7
diff --git a/tests/ui/mismatched_types/collect-method-type-mismatch-66923.stderr b/tests/ui/mismatched_types/collect-method-type-mismatch-66923.stderr
index 89c755c..a789ae0 100644
--- a/tests/ui/mismatched_types/collect-method-type-mismatch-66923.stderr
+++ b/tests/ui/mismatched_types/collect-method-type-mismatch-66923.stderr
@@ -4,8 +4,9 @@
LL | let x2: Vec<f64> = x1.into_iter().collect();
| ^^^^^^^ value of type `Vec<f64>` cannot be built from `std::iter::Iterator<Item=&f64>`
|
- = help: the trait `FromIterator<&_>` is not implemented for `Vec<f64>`
- but trait `FromIterator<_>` is implemented for it
+help: the trait `FromIterator<&_>` is not implemented for `Vec<f64>`
+ but trait `FromIterator<_>` is implemented for it
+ --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
= help: for that trait implementation, expected `f64`, found `&f64`
note: the method call chain might not have had the expected associated types
--> $DIR/collect-method-type-mismatch-66923.rs:9:27
@@ -25,8 +26,9 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `FromIterator<&_>` is not implemented for `Vec<f64>`
- but trait `FromIterator<_>` is implemented for it
+help: the trait `FromIterator<&_>` is not implemented for `Vec<f64>`
+ but trait `FromIterator<_>` is implemented for it
+ --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL
= help: for that trait implementation, expected `f64`, found `&f64`
note: the method call chain might not have had the expected associated types
--> $DIR/collect-method-type-mismatch-66923.rs:13:17
diff --git a/tests/ui/mismatched_types/float-integer-subtraction-error-24352.stderr b/tests/ui/mismatched_types/float-integer-subtraction-error-24352.stderr
index 7dc1fa7..b2d0ffc 100644
--- a/tests/ui/mismatched_types/float-integer-subtraction-error-24352.stderr
+++ b/tests/ui/mismatched_types/float-integer-subtraction-error-24352.stderr
@@ -5,11 +5,17 @@
| ^ no implementation for `f64 - {integer}`
|
= help: the trait `Sub<{integer}>` is not implemented for `f64`
- = help: the following other types implement trait `Sub<Rhs>`:
- `&f64` implements `Sub<f64>`
- `&f64` implements `Sub`
- `f64` implements `Sub<&f64>`
- `f64` implements `Sub`
+help: the following other types implement trait `Sub<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Sub<f64>`
+ |
+ = note: `&f64` implements `Sub`
+ |
+ = note: `f64` implements `Sub<&f64>`
+ |
+ = note: `f64` implements `Sub`
+ = note: this error originates in the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider using a floating-point literal by writing it with `.0`
|
LL | 1.0f64 - 1.0
diff --git a/tests/ui/never_type/defaulted-never-note.fallback.stderr b/tests/ui/never_type/defaulted-never-note.fallback.stderr
index 299f463..560a53a 100644
--- a/tests/ui/never_type/defaulted-never-note.fallback.stderr
+++ b/tests/ui/never_type/defaulted-never-note.fallback.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `ImplementedForUnitButNotNever` is implemented for `()`
+help: the trait `ImplementedForUnitButNotNever` is implemented for `()`
+ --> $DIR/defaulted-never-note.rs:24:1
+ |
+LL | impl ImplementedForUnitButNotNever for () {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: this error might have been caused by changes to Rust's type-inference algorithm (see issue #48950 <https://github.com/rust-lang/rust/issues/48950> for more information)
= help: you might have intended to use the type `()` here instead
note: required by a bound in `foo`
diff --git a/tests/ui/never_type/defaulted-never-note.rs b/tests/ui/never_type/defaulted-never-note.rs
index 8164d00..63647d5 100644
--- a/tests/ui/never_type/defaulted-never-note.rs
+++ b/tests/ui/never_type/defaulted-never-note.rs
@@ -21,7 +21,7 @@ fn deserialize() -> Result<(), String> {
trait ImplementedForUnitButNotNever {}
-impl ImplementedForUnitButNotNever for () {}
+impl ImplementedForUnitButNotNever for () {} //[fallback]~ HELP trait `ImplementedForUnitButNotNever` is implemented for `()`
fn foo<T: ImplementedForUnitButNotNever>(_t: T) {}
//[fallback]~^ note: required by this bound in `foo`
@@ -29,12 +29,11 @@ fn foo<T: ImplementedForUnitButNotNever>(_t: T) {}
fn smeg() {
let _x = return;
foo(_x);
- //[fallback]~^ error: the trait bound
- //[fallback]~| note: the trait `ImplementedForUnitButNotNever` is not implemented
- //[fallback]~| help: trait `ImplementedForUnitButNotNever` is implemented for `()`
- //[fallback]~| note: this error might have been caused
- //[fallback]~| note: required by a bound introduced by this call
- //[fallback]~| help: you might have intended to use the type `()`
+ //[fallback]~^ ERROR the trait bound
+ //[fallback]~| NOTE the trait `ImplementedForUnitButNotNever` is not implemented
+ //[fallback]~| NOTE this error might have been caused
+ //[fallback]~| NOTE required by a bound introduced by this call
+ //[fallback]~| HELP you might have intended to use the type `()`
}
fn main() {
diff --git a/tests/ui/never_type/diverging-fallback-no-leak.fallback.stderr b/tests/ui/never_type/diverging-fallback-no-leak.fallback.stderr
index 56bff12..dbb57a4 100644
--- a/tests/ui/never_type/diverging-fallback-no-leak.fallback.stderr
+++ b/tests/ui/never_type/diverging-fallback-no-leak.fallback.stderr
@@ -6,9 +6,13 @@
| |
| required by a bound introduced by this call
|
- = help: the following other types implement trait `Test`:
- ()
- i32
+help: the following other types implement trait `Test`
+ --> $DIR/diverging-fallback-no-leak.rs:10:1
+ |
+LL | impl Test for i32 {}
+ | ^^^^^^^^^^^^^^^^^ `i32`
+LL | impl Test for () {}
+ | ^^^^^^^^^^^^^^^^ `()`
= note: this error might have been caused by changes to Rust's type-inference algorithm (see issue #48950 <https://github.com/rust-lang/rust/issues/48950> for more information)
= help: you might have intended to use the type `()` here instead
note: required by a bound in `unconstrained_arg`
diff --git a/tests/ui/never_type/from_infer_breaking_with_unit_fallback.unit.stderr b/tests/ui/never_type/from_infer_breaking_with_unit_fallback.unit.stderr
index 891b6ea..da44d72 100644
--- a/tests/ui/never_type/from_infer_breaking_with_unit_fallback.unit.stderr
+++ b/tests/ui/never_type/from_infer_breaking_with_unit_fallback.unit.stderr
@@ -4,8 +4,12 @@
LL | <E as From<_>>::from(never); // Should the inference fail?
| ^ unsatisfied trait bound
|
- = help: the trait `From<()>` is not implemented for `E`
- but trait `From<!>` is implemented for it
+help: the trait `From<()>` is not implemented for `E`
+ but trait `From<!>` is implemented for it
+ --> $DIR/from_infer_breaking_with_unit_fallback.rs:16:1
+ |
+LL | impl From<!> for E {
+ | ^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `!`, found `()`
error: aborting due to 1 previous error
diff --git a/tests/ui/never_type/impl_trait_fallback2.stderr b/tests/ui/never_type/impl_trait_fallback2.stderr
index 0f197aa..49dc602 100644
--- a/tests/ui/never_type/impl_trait_fallback2.stderr
+++ b/tests/ui/never_type/impl_trait_fallback2.stderr
@@ -7,7 +7,11 @@
LL | panic!()
| -------- return type was inferred to be `_` here
|
- = help: the trait `T` is implemented for `i32`
+help: the trait `T` is implemented for `i32`
+ --> $DIR/impl_trait_fallback2.rs:6:1
+ |
+LL | impl T for i32 {}
+ | ^^^^^^^^^^^^^^
error[E0277]: the trait bound `(): T` is not satisfied
--> $DIR/impl_trait_fallback2.rs:16:11
@@ -18,7 +22,11 @@
LL | panic!()
| -------- return type was inferred to be `_` here
|
- = help: the trait `T` is implemented for `i32`
+help: the trait `T` is implemented for `i32`
+ --> $DIR/impl_trait_fallback2.rs:6:1
+ |
+LL | impl T for i32 {}
+ | ^^^^^^^^^^^^^^
error: aborting due to 2 previous errors
diff --git a/tests/ui/never_type/issue-13352.stderr b/tests/ui/never_type/issue-13352.stderr
index 6818fa8..344625a 100644
--- a/tests/ui/never_type/issue-13352.stderr
+++ b/tests/ui/never_type/issue-13352.stderr
@@ -5,11 +5,17 @@
| ^ no implementation for `usize + ()`
|
= help: the trait `Add<()>` is not implemented for `usize`
- = help: the following other types implement trait `Add<Rhs>`:
- `&usize` implements `Add<usize>`
- `&usize` implements `Add`
- `usize` implements `Add<&usize>`
- `usize` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&usize` implements `Add<usize>`
+ |
+ = note: `&usize` implements `Add`
+ |
+ = note: `usize` implements `Add<&usize>`
+ |
+ = note: `usize` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 1 previous error
diff --git a/tests/ui/never_type/never-value-fallback-issue-66757.nofallback.stderr b/tests/ui/never_type/never-value-fallback-issue-66757.nofallback.stderr
index cd34cd9..199f113 100644
--- a/tests/ui/never_type/never-value-fallback-issue-66757.nofallback.stderr
+++ b/tests/ui/never_type/never-value-fallback-issue-66757.nofallback.stderr
@@ -4,8 +4,12 @@
LL | <E as From<_>>::from(never);
| ^ unsatisfied trait bound
|
- = help: the trait `From<()>` is not implemented for `E`
- but trait `From<!>` is implemented for it
+help: the trait `From<()>` is not implemented for `E`
+ but trait `From<!>` is implemented for it
+ --> $DIR/never-value-fallback-issue-66757.rs:17:1
+ |
+LL | impl From<!> for E {
+ | ^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `!`, found `()`
error: aborting due to 1 previous error
diff --git a/tests/ui/numbers-arithmetic/not-suggest-float-literal.stderr b/tests/ui/numbers-arithmetic/not-suggest-float-literal.stderr
index ec560fc..3f5297b 100644
--- a/tests/ui/numbers-arithmetic/not-suggest-float-literal.stderr
+++ b/tests/ui/numbers-arithmetic/not-suggest-float-literal.stderr
@@ -5,11 +5,17 @@
| ^ no implementation for `u8 + {float}`
|
= help: the trait `Add<{float}>` is not implemented for `u8`
- = help: the following other types implement trait `Add<Rhs>`:
- `&u8` implements `Add<u8>`
- `&u8` implements `Add`
- `u8` implements `Add<&u8>`
- `u8` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&u8` implements `Add<u8>`
+ |
+ = note: `&u8` implements `Add`
+ |
+ = note: `u8` implements `Add<&u8>`
+ |
+ = note: `u8` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: cannot add `&str` to `f64`
--> $DIR/not-suggest-float-literal.rs:6:7
@@ -18,11 +24,17 @@
| ^ no implementation for `f64 + &str`
|
= help: the trait `Add<&str>` is not implemented for `f64`
- = help: the following other types implement trait `Add<Rhs>`:
- `&f64` implements `Add<f64>`
- `&f64` implements `Add`
- `f64` implements `Add<&f64>`
- `f64` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Add<f64>`
+ |
+ = note: `&f64` implements `Add`
+ |
+ = note: `f64` implements `Add<&f64>`
+ |
+ = note: `f64` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: cannot add `{integer}` to `f64`
--> $DIR/not-suggest-float-literal.rs:11:7
@@ -31,11 +43,17 @@
| ^ no implementation for `f64 + {integer}`
|
= help: the trait `Add<{integer}>` is not implemented for `f64`
- = help: the following other types implement trait `Add<Rhs>`:
- `&f64` implements `Add<f64>`
- `&f64` implements `Add`
- `f64` implements `Add<&f64>`
- `f64` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Add<f64>`
+ |
+ = note: `&f64` implements `Add`
+ |
+ = note: `f64` implements `Add<&f64>`
+ |
+ = note: `f64` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: cannot subtract `{float}` from `u8`
--> $DIR/not-suggest-float-literal.rs:15:7
@@ -44,11 +62,17 @@
| ^ no implementation for `u8 - {float}`
|
= help: the trait `Sub<{float}>` is not implemented for `u8`
- = help: the following other types implement trait `Sub<Rhs>`:
- `&u8` implements `Sub<u8>`
- `&u8` implements `Sub`
- `u8` implements `Sub<&u8>`
- `u8` implements `Sub`
+help: the following other types implement trait `Sub<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&u8` implements `Sub<u8>`
+ |
+ = note: `&u8` implements `Sub`
+ |
+ = note: `u8` implements `Sub<&u8>`
+ |
+ = note: `u8` implements `Sub`
+ = note: this error originates in the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: cannot subtract `&str` from `f64`
--> $DIR/not-suggest-float-literal.rs:19:7
@@ -57,11 +81,17 @@
| ^ no implementation for `f64 - &str`
|
= help: the trait `Sub<&str>` is not implemented for `f64`
- = help: the following other types implement trait `Sub<Rhs>`:
- `&f64` implements `Sub<f64>`
- `&f64` implements `Sub`
- `f64` implements `Sub<&f64>`
- `f64` implements `Sub`
+help: the following other types implement trait `Sub<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Sub<f64>`
+ |
+ = note: `&f64` implements `Sub`
+ |
+ = note: `f64` implements `Sub<&f64>`
+ |
+ = note: `f64` implements `Sub`
+ = note: this error originates in the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: cannot subtract `{integer}` from `f64`
--> $DIR/not-suggest-float-literal.rs:24:7
@@ -70,11 +100,17 @@
| ^ no implementation for `f64 - {integer}`
|
= help: the trait `Sub<{integer}>` is not implemented for `f64`
- = help: the following other types implement trait `Sub<Rhs>`:
- `&f64` implements `Sub<f64>`
- `&f64` implements `Sub`
- `f64` implements `Sub<&f64>`
- `f64` implements `Sub`
+help: the following other types implement trait `Sub<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Sub<f64>`
+ |
+ = note: `&f64` implements `Sub`
+ |
+ = note: `f64` implements `Sub<&f64>`
+ |
+ = note: `f64` implements `Sub`
+ = note: this error originates in the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: cannot multiply `u8` by `{float}`
--> $DIR/not-suggest-float-literal.rs:28:7
@@ -83,11 +119,17 @@
| ^ no implementation for `u8 * {float}`
|
= help: the trait `Mul<{float}>` is not implemented for `u8`
- = help: the following other types implement trait `Mul<Rhs>`:
- `&u8` implements `Mul<u8>`
- `&u8` implements `Mul`
- `u8` implements `Mul<&u8>`
- `u8` implements `Mul`
+help: the following other types implement trait `Mul<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&u8` implements `Mul<u8>`
+ |
+ = note: `&u8` implements `Mul`
+ |
+ = note: `u8` implements `Mul<&u8>`
+ |
+ = note: `u8` implements `Mul`
+ = note: this error originates in the macro `mul_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: cannot multiply `f64` by `&str`
--> $DIR/not-suggest-float-literal.rs:32:7
@@ -96,11 +138,17 @@
| ^ no implementation for `f64 * &str`
|
= help: the trait `Mul<&str>` is not implemented for `f64`
- = help: the following other types implement trait `Mul<Rhs>`:
- `&f64` implements `Mul<f64>`
- `&f64` implements `Mul`
- `f64` implements `Mul<&f64>`
- `f64` implements `Mul`
+help: the following other types implement trait `Mul<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Mul<f64>`
+ |
+ = note: `&f64` implements `Mul`
+ |
+ = note: `f64` implements `Mul<&f64>`
+ |
+ = note: `f64` implements `Mul`
+ = note: this error originates in the macro `mul_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: cannot multiply `f64` by `{integer}`
--> $DIR/not-suggest-float-literal.rs:37:7
@@ -109,11 +157,17 @@
| ^ no implementation for `f64 * {integer}`
|
= help: the trait `Mul<{integer}>` is not implemented for `f64`
- = help: the following other types implement trait `Mul<Rhs>`:
- `&f64` implements `Mul<f64>`
- `&f64` implements `Mul`
- `f64` implements `Mul<&f64>`
- `f64` implements `Mul`
+help: the following other types implement trait `Mul<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Mul<f64>`
+ |
+ = note: `&f64` implements `Mul`
+ |
+ = note: `f64` implements `Mul<&f64>`
+ |
+ = note: `f64` implements `Mul`
+ = note: this error originates in the macro `mul_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: cannot divide `u8` by `{float}`
--> $DIR/not-suggest-float-literal.rs:41:7
@@ -136,11 +190,17 @@
| ^ no implementation for `f64 / &str`
|
= help: the trait `Div<&str>` is not implemented for `f64`
- = help: the following other types implement trait `Div<Rhs>`:
- `&f64` implements `Div<f64>`
- `&f64` implements `Div`
- `f64` implements `Div<&f64>`
- `f64` implements `Div`
+help: the following other types implement trait `Div<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Div<f64>`
+ |
+ = note: `&f64` implements `Div`
+ |
+ = note: `f64` implements `Div<&f64>`
+ |
+ = note: `f64` implements `Div`
+ = note: this error originates in the macro `div_impl_float` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: cannot divide `f64` by `{integer}`
--> $DIR/not-suggest-float-literal.rs:50:7
@@ -149,11 +209,17 @@
| ^ no implementation for `f64 / {integer}`
|
= help: the trait `Div<{integer}>` is not implemented for `f64`
- = help: the following other types implement trait `Div<Rhs>`:
- `&f64` implements `Div<f64>`
- `&f64` implements `Div`
- `f64` implements `Div<&f64>`
- `f64` implements `Div`
+help: the following other types implement trait `Div<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Div<f64>`
+ |
+ = note: `&f64` implements `Div`
+ |
+ = note: `f64` implements `Div<&f64>`
+ |
+ = note: `f64` implements `Div`
+ = note: this error originates in the macro `div_impl_float` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 12 previous errors
diff --git a/tests/ui/numbers-arithmetic/suggest-float-literal.stderr b/tests/ui/numbers-arithmetic/suggest-float-literal.stderr
index d8bff86..a31ed61 100644
--- a/tests/ui/numbers-arithmetic/suggest-float-literal.stderr
+++ b/tests/ui/numbers-arithmetic/suggest-float-literal.stderr
@@ -5,11 +5,17 @@
| ^ no implementation for `f32 + {integer}`
|
= help: the trait `Add<{integer}>` is not implemented for `f32`
- = help: the following other types implement trait `Add<Rhs>`:
- `&f32` implements `Add<f32>`
- `&f32` implements `Add`
- `f32` implements `Add<&f32>`
- `f32` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f32` implements `Add<f32>`
+ |
+ = note: `&f32` implements `Add`
+ |
+ = note: `f32` implements `Add<&f32>`
+ |
+ = note: `f32` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider using a floating-point literal by writing it with `.0`
|
LL | x + 100.0
@@ -22,11 +28,17 @@
| ^ no implementation for `f64 + {integer}`
|
= help: the trait `Add<{integer}>` is not implemented for `f64`
- = help: the following other types implement trait `Add<Rhs>`:
- `&f64` implements `Add<f64>`
- `&f64` implements `Add`
- `f64` implements `Add<&f64>`
- `f64` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Add<f64>`
+ |
+ = note: `&f64` implements `Add`
+ |
+ = note: `f64` implements `Add<&f64>`
+ |
+ = note: `f64` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider using a floating-point literal by writing it with `.0`
|
LL | x + 100.0
@@ -39,11 +51,17 @@
| ^ no implementation for `f32 - {integer}`
|
= help: the trait `Sub<{integer}>` is not implemented for `f32`
- = help: the following other types implement trait `Sub<Rhs>`:
- `&f32` implements `Sub<f32>`
- `&f32` implements `Sub`
- `f32` implements `Sub<&f32>`
- `f32` implements `Sub`
+help: the following other types implement trait `Sub<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f32` implements `Sub<f32>`
+ |
+ = note: `&f32` implements `Sub`
+ |
+ = note: `f32` implements `Sub<&f32>`
+ |
+ = note: `f32` implements `Sub`
+ = note: this error originates in the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider using a floating-point literal by writing it with `.0`
|
LL | x - 100.0
@@ -56,11 +74,17 @@
| ^ no implementation for `f64 - {integer}`
|
= help: the trait `Sub<{integer}>` is not implemented for `f64`
- = help: the following other types implement trait `Sub<Rhs>`:
- `&f64` implements `Sub<f64>`
- `&f64` implements `Sub`
- `f64` implements `Sub<&f64>`
- `f64` implements `Sub`
+help: the following other types implement trait `Sub<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Sub<f64>`
+ |
+ = note: `&f64` implements `Sub`
+ |
+ = note: `f64` implements `Sub<&f64>`
+ |
+ = note: `f64` implements `Sub`
+ = note: this error originates in the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider using a floating-point literal by writing it with `.0`
|
LL | x - 100.0
@@ -73,11 +97,17 @@
| ^ no implementation for `f32 * {integer}`
|
= help: the trait `Mul<{integer}>` is not implemented for `f32`
- = help: the following other types implement trait `Mul<Rhs>`:
- `&f32` implements `Mul<f32>`
- `&f32` implements `Mul`
- `f32` implements `Mul<&f32>`
- `f32` implements `Mul`
+help: the following other types implement trait `Mul<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f32` implements `Mul<f32>`
+ |
+ = note: `&f32` implements `Mul`
+ |
+ = note: `f32` implements `Mul<&f32>`
+ |
+ = note: `f32` implements `Mul`
+ = note: this error originates in the macro `mul_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider using a floating-point literal by writing it with `.0`
|
LL | x * 100.0
@@ -90,11 +120,17 @@
| ^ no implementation for `f64 * {integer}`
|
= help: the trait `Mul<{integer}>` is not implemented for `f64`
- = help: the following other types implement trait `Mul<Rhs>`:
- `&f64` implements `Mul<f64>`
- `&f64` implements `Mul`
- `f64` implements `Mul<&f64>`
- `f64` implements `Mul`
+help: the following other types implement trait `Mul<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Mul<f64>`
+ |
+ = note: `&f64` implements `Mul`
+ |
+ = note: `f64` implements `Mul<&f64>`
+ |
+ = note: `f64` implements `Mul`
+ = note: this error originates in the macro `mul_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider using a floating-point literal by writing it with `.0`
|
LL | x * 100.0
@@ -107,11 +143,17 @@
| ^ no implementation for `f32 / {integer}`
|
= help: the trait `Div<{integer}>` is not implemented for `f32`
- = help: the following other types implement trait `Div<Rhs>`:
- `&f32` implements `Div<f32>`
- `&f32` implements `Div`
- `f32` implements `Div<&f32>`
- `f32` implements `Div`
+help: the following other types implement trait `Div<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f32` implements `Div<f32>`
+ |
+ = note: `&f32` implements `Div`
+ |
+ = note: `f32` implements `Div<&f32>`
+ |
+ = note: `f32` implements `Div`
+ = note: this error originates in the macro `div_impl_float` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider using a floating-point literal by writing it with `.0`
|
LL | x / 100.0
@@ -124,11 +166,17 @@
| ^ no implementation for `f64 / {integer}`
|
= help: the trait `Div<{integer}>` is not implemented for `f64`
- = help: the following other types implement trait `Div<Rhs>`:
- `&f64` implements `Div<f64>`
- `&f64` implements `Div`
- `f64` implements `Div<&f64>`
- `f64` implements `Div`
+help: the following other types implement trait `Div<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&f64` implements `Div<f64>`
+ |
+ = note: `&f64` implements `Div`
+ |
+ = note: `f64` implements `Div<&f64>`
+ |
+ = note: `f64` implements `Div`
+ = note: this error originates in the macro `div_impl_float` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider using a floating-point literal by writing it with `.0`
|
LL | x / 100.0
diff --git a/tests/ui/on-unimplemented/slice-index.stderr b/tests/ui/on-unimplemented/slice-index.stderr
index e011826..baf821c 100644
--- a/tests/ui/on-unimplemented/slice-index.stderr
+++ b/tests/ui/on-unimplemented/slice-index.stderr
@@ -5,9 +5,13 @@
| ^^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[i32]>` is not implemented for `i32`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `[i32]` to implement `Index<i32>`
error[E0277]: the type `[i32]` cannot be indexed by `RangeTo<i32>`
@@ -17,11 +21,18 @@
| ^^^^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[i32]>` is not implemented for `RangeTo<i32>`
- = help: the following other types implement trait `SliceIndex<T>`:
- `RangeTo<usize>` implements `SliceIndex<ByteStr>`
- `RangeTo<usize>` implements `SliceIndex<[T]>`
- `RangeTo<usize>` implements `SliceIndex<str>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `RangeTo<usize>` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `RangeTo<usize>` implements `SliceIndex<ByteStr>`
+ --> $SRC_DIR/core/src/str/traits.rs:LL:COL
+ |
+ = note: `RangeTo<usize>` implements `SliceIndex<str>`
= note: required for `[i32]` to implement `Index<RangeTo<i32>>`
+ = note: this error originates in the macro `impl_slice_index` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 2 previous errors
diff --git a/tests/ui/on-unimplemented/suggest_tuple_wrap.rs b/tests/ui/on-unimplemented/suggest_tuple_wrap.rs
index 010a47a..61f7646 100644
--- a/tests/ui/on-unimplemented/suggest_tuple_wrap.rs
+++ b/tests/ui/on-unimplemented/suggest_tuple_wrap.rs
@@ -6,7 +6,7 @@ impl Argument for &str {}
pub trait TupleArgs {}
impl<A: Argument> TupleArgs for (A,) {}
-impl<A: Argument, B: Argument> TupleArgs for (A, B) {}
+impl<A: Argument, B: Argument> TupleArgs for (A, B) {} //~ HELP the following other types implement trait `TupleArgs`
impl<A: Argument, B: Argument, C: Argument> TupleArgs for (A, B, C) {}
fn convert_into_tuple(_x: impl TupleArgs) {}
@@ -14,6 +14,5 @@ fn convert_into_tuple(_x: impl TupleArgs) {}
fn main() {
convert_into_tuple(42_u8);
//~^ ERROR E0277
- //~| HELP the following other types implement trait `TupleArgs`
//~| HELP use a unary tuple instead
}
diff --git a/tests/ui/on-unimplemented/suggest_tuple_wrap.stderr b/tests/ui/on-unimplemented/suggest_tuple_wrap.stderr
index 93dd43a..50c2042 100644
--- a/tests/ui/on-unimplemented/suggest_tuple_wrap.stderr
+++ b/tests/ui/on-unimplemented/suggest_tuple_wrap.stderr
@@ -6,10 +6,15 @@
| |
| required by a bound introduced by this call
|
- = help: the following other types implement trait `TupleArgs`:
- (A, B)
- (A, B, C)
- (A,)
+help: the following other types implement trait `TupleArgs`
+ --> $DIR/suggest_tuple_wrap.rs:8:1
+ |
+LL | impl<A: Argument> TupleArgs for (A,) {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(A,)`
+LL | impl<A: Argument, B: Argument> TupleArgs for (A, B) {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(A, B)`
+LL | impl<A: Argument, B: Argument, C: Argument> TupleArgs for (A, B, C) {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(A, B, C)`
note: required by a bound in `convert_into_tuple`
--> $DIR/suggest_tuple_wrap.rs:12:32
|
diff --git a/tests/ui/on-unimplemented/suggest_tuple_wrap_root_obligation.rs b/tests/ui/on-unimplemented/suggest_tuple_wrap_root_obligation.rs
index 0c195a5..aaaf4d3 100644
--- a/tests/ui/on-unimplemented/suggest_tuple_wrap_root_obligation.rs
+++ b/tests/ui/on-unimplemented/suggest_tuple_wrap_root_obligation.rs
@@ -5,7 +5,7 @@ fn from(_: (u8,)) -> Self {
todo!()
}
}
-impl From<(u8, u8)> for Tuple {
+impl From<(u8, u8)> for Tuple { //~ HELP the following other types implement trait `From<T>`
fn from(_: (u8, u8)) -> Self {
todo!()
}
@@ -22,5 +22,4 @@ fn main() {
convert_into_tuple(42_u8);
//~^ ERROR E0277
//~| HELP use a unary tuple instead
- //~| HELP the following other types implement trait `From<T>`
}
diff --git a/tests/ui/on-unimplemented/suggest_tuple_wrap_root_obligation.stderr b/tests/ui/on-unimplemented/suggest_tuple_wrap_root_obligation.stderr
index c4156e1..cf15ac1 100644
--- a/tests/ui/on-unimplemented/suggest_tuple_wrap_root_obligation.stderr
+++ b/tests/ui/on-unimplemented/suggest_tuple_wrap_root_obligation.stderr
@@ -11,10 +11,17 @@
|
LL | struct Tuple;
| ^^^^^^^^^^^^
- = help: the following other types implement trait `From<T>`:
- `Tuple` implements `From<(u8, u8)>`
- `Tuple` implements `From<(u8, u8, u8)>`
- `Tuple` implements `From<(u8,)>`
+help: the following other types implement trait `From<T>`
+ --> $DIR/suggest_tuple_wrap_root_obligation.rs:3:1
+ |
+LL | impl From<(u8,)> for Tuple {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `Tuple` implements `From<(u8,)>`
+...
+LL | impl From<(u8, u8)> for Tuple {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Tuple` implements `From<(u8, u8)>`
+...
+LL | impl From<(u8, u8, u8)> for Tuple {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Tuple` implements `From<(u8, u8, u8)>`
= note: required for `u8` to implement `Into<Tuple>`
note: required by a bound in `convert_into_tuple`
--> $DIR/suggest_tuple_wrap_root_obligation.rs:19:32
diff --git a/tests/ui/on-unimplemented/sum.stderr b/tests/ui/on-unimplemented/sum.stderr
index d89cc2f..c4650e9 100644
--- a/tests/ui/on-unimplemented/sum.stderr
+++ b/tests/ui/on-unimplemented/sum.stderr
@@ -7,9 +7,12 @@
| required by a bound introduced by this call
|
= help: the trait `Sum<&()>` is not implemented for `i32`
- = help: the following other types implement trait `Sum<A>`:
- `i32` implements `Sum<&i32>`
- `i32` implements `Sum`
+help: the following other types implement trait `Sum<A>`
+ --> $SRC_DIR/core/src/iter/traits/accum.rs:LL:COL
+ |
+ = note: `i32` implements `Sum<&i32>`
+ |
+ = note: `i32` implements `Sum`
note: the method call chain might not have had the expected associated types
--> $DIR/sum.rs:4:18
|
@@ -19,6 +22,7 @@
| this expression has type `Vec<()>`
note: required by a bound in `std::iter::Iterator::sum`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+ = note: this error originates in the macro `integer_sum_product` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: a value of type `i32` cannot be made by multiplying all elements of type `&()` from an iterator
--> $DIR/sum.rs:7:35
@@ -29,9 +33,12 @@
| required by a bound introduced by this call
|
= help: the trait `Product<&()>` is not implemented for `i32`
- = help: the following other types implement trait `Product<A>`:
- `i32` implements `Product<&i32>`
- `i32` implements `Product`
+help: the following other types implement trait `Product<A>`
+ --> $SRC_DIR/core/src/iter/traits/accum.rs:LL:COL
+ |
+ = note: `i32` implements `Product<&i32>`
+ |
+ = note: `i32` implements `Product`
note: the method call chain might not have had the expected associated types
--> $DIR/sum.rs:7:18
|
@@ -41,6 +48,7 @@
| this expression has type `Vec<()>`
note: required by a bound in `std::iter::Iterator::product`
--> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
+ = note: this error originates in the macro `integer_sum_product` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 2 previous errors
diff --git a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/trait-selection-sanity.without_impl.stderr b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/trait-selection-sanity.without_impl.stderr
index 83e4522..7201535 100644
--- a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/trait-selection-sanity.without_impl.stderr
+++ b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/trait-selection-sanity.without_impl.stderr
@@ -4,7 +4,11 @@
LL | let (&_, b) = generic();
| ^^^^^^^^^ the trait `main::Ref` is not implemented for `&_`
|
- = help: the trait `main::Ref` is implemented for `&'static mut [(); 0]`
+help: the trait `main::Ref` is implemented for `&'static mut [(); 0]`
+ --> $DIR/trait-selection-sanity.rs:22:5
+ |
+LL | impl Ref for &'static mut [(); 0] {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `generic`
--> $DIR/trait-selection-sanity.rs:7:19
|
diff --git a/tests/ui/span/multiline-span-simple.stderr b/tests/ui/span/multiline-span-simple.stderr
index d815f14..af04cea 100644
--- a/tests/ui/span/multiline-span-simple.stderr
+++ b/tests/ui/span/multiline-span-simple.stderr
@@ -5,11 +5,17 @@
| ^ no implementation for `u32 + ()`
|
= help: the trait `Add<()>` is not implemented for `u32`
- = help: the following other types implement trait `Add<Rhs>`:
- `&u32` implements `Add<u32>`
- `&u32` implements `Add`
- `u32` implements `Add<&u32>`
- `u32` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&u32` implements `Add<u32>`
+ |
+ = note: `&u32` implements `Add`
+ |
+ = note: `u32` implements `Add<&u32>`
+ |
+ = note: `u32` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 1 previous error
diff --git a/tests/ui/specialization/coherence/default-impl-normalization-ambig-2.stderr b/tests/ui/specialization/coherence/default-impl-normalization-ambig-2.stderr
index a2fca2e..e950268 100644
--- a/tests/ui/specialization/coherence/default-impl-normalization-ambig-2.stderr
+++ b/tests/ui/specialization/coherence/default-impl-normalization-ambig-2.stderr
@@ -14,7 +14,11 @@
LL | impl Foo for <u16 as Assoc>::Output {}
| ^^^^^^^^^^^^^^^^^^^^^^ the trait `Assoc` is not implemented for `u16`
|
- = help: the trait `Assoc` is implemented for `u8`
+help: the trait `Assoc` is implemented for `u8`
+ --> $DIR/default-impl-normalization-ambig-2.rs:12:1
+ |
+LL | impl Assoc for u8 {}
+ | ^^^^^^^^^^^^^^^^^
error: aborting due to 1 previous error; 1 warning emitted
diff --git a/tests/ui/specialization/default-associated-type-bound-1.stderr b/tests/ui/specialization/default-associated-type-bound-1.stderr
index 516df55..aa6f695 100644
--- a/tests/ui/specialization/default-associated-type-bound-1.stderr
+++ b/tests/ui/specialization/default-associated-type-bound-1.stderr
@@ -14,7 +14,8 @@
LL | default type U = str;
| ^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `X::U`
--> $DIR/default-associated-type-bound-1.rs:8:13
|
diff --git a/tests/ui/str/str-idx.stderr b/tests/ui/str/str-idx.stderr
index 60cae7e..97a083b 100644
--- a/tests/ui/str/str-idx.stderr
+++ b/tests/ui/str/str-idx.stderr
@@ -7,9 +7,13 @@
= help: the trait `SliceIndex<str>` is not implemented for `{integer}`
= note: you can use `.chars().nth()` or `.bytes().nth()`
for more information, see chapter 8 in The Book: <https://doc.rust-lang.org/book/ch08-02-strings.html#indexing-into-strings>
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `str` to implement `Index<{integer}>`
error[E0277]: the type `str` cannot be indexed by `{integer}`
@@ -23,9 +27,13 @@
= help: the trait `SliceIndex<str>` is not implemented for `{integer}`
= note: you can use `.chars().nth()` or `.bytes().nth()`
for more information, see chapter 8 in The Book: <https://doc.rust-lang.org/book/ch08-02-strings.html#indexing-into-strings>
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
note: required by a bound in `core::str::<impl str>::get`
--> $SRC_DIR/core/src/str/mod.rs:LL:COL
@@ -40,9 +48,13 @@
= help: the trait `SliceIndex<str>` is not implemented for `{integer}`
= note: you can use `.chars().nth()` or `.bytes().nth()`
for more information, see chapter 8 in The Book: <https://doc.rust-lang.org/book/ch08-02-strings.html#indexing-into-strings>
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
note: required by a bound in `core::str::<impl str>::get_unchecked`
--> $SRC_DIR/core/src/str/mod.rs:LL:COL
diff --git a/tests/ui/str/str-mut-idx.stderr b/tests/ui/str/str-mut-idx.stderr
index 4e3fe12..c9bd66d 100644
--- a/tests/ui/str/str-mut-idx.stderr
+++ b/tests/ui/str/str-mut-idx.stderr
@@ -31,9 +31,13 @@
| ^^^^^^ string indices are ranges of `usize`
|
= help: the trait `SliceIndex<str>` is not implemented for `usize`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `str` to implement `Index<usize>`
error[E0277]: the type `str` cannot be indexed by `{integer}`
@@ -47,9 +51,13 @@
= help: the trait `SliceIndex<str>` is not implemented for `{integer}`
= note: you can use `.chars().nth()` or `.bytes().nth()`
for more information, see chapter 8 in The Book: <https://doc.rust-lang.org/book/ch08-02-strings.html#indexing-into-strings>
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
note: required by a bound in `core::str::<impl str>::get_mut`
--> $SRC_DIR/core/src/str/mod.rs:LL:COL
@@ -64,9 +72,13 @@
= help: the trait `SliceIndex<str>` is not implemented for `{integer}`
= note: you can use `.chars().nth()` or `.bytes().nth()`
for more information, see chapter 8 in The Book: <https://doc.rust-lang.org/book/ch08-02-strings.html#indexing-into-strings>
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
note: required by a bound in `core::str::<impl str>::get_unchecked_mut`
--> $SRC_DIR/core/src/str/mod.rs:LL:COL
diff --git a/tests/ui/suggestions/dont-suggest-borrowing-existing-borrow.stderr b/tests/ui/suggestions/dont-suggest-borrowing-existing-borrow.stderr
index 86d9a74..5eb64c4 100644
--- a/tests/ui/suggestions/dont-suggest-borrowing-existing-borrow.stderr
+++ b/tests/ui/suggestions/dont-suggest-borrowing-existing-borrow.stderr
@@ -27,7 +27,11 @@
|
LL | struct S;
| ^^^^^^^^
- = help: the trait `Trait` is implemented for `&mut S`
+help: the trait `Trait` is implemented for `&mut S`
+ --> $DIR/dont-suggest-borrowing-existing-borrow.rs:7:1
+ |
+LL | impl Trait for &mut S {}
+ | ^^^^^^^^^^^^^^^^^^^^^
help: you likely meant to call the associated function `foo` for type `&mut S`, but the code as written calls associated function `foo` on type `S`
|
LL | let _ = <&mut S>::foo();
@@ -44,7 +48,11 @@
|
LL | struct S;
| ^^^^^^^^
- = help: the trait `Trait` is implemented for `&mut S`
+help: the trait `Trait` is implemented for `&mut S`
+ --> $DIR/dont-suggest-borrowing-existing-borrow.rs:7:1
+ |
+LL | impl Trait for &mut S {}
+ | ^^^^^^^^^^^^^^^^^^^^^
help: you likely meant to call the associated function `foo` for type `&S`, but the code as written calls associated function `foo` on type `S`
|
LL - let _ = &S::foo();
@@ -73,9 +81,13 @@
|
LL | struct S;
| ^^^^^^^^
- = help: the following other types implement trait `Trait2`:
- &S
- &mut S
+help: the following other types implement trait `Trait2`
+ --> $DIR/dont-suggest-borrowing-existing-borrow.rs:11:1
+ |
+LL | impl Trait2 for &S {}
+ | ^^^^^^^^^^^^^^^^^^ `&S`
+LL | impl Trait2 for &mut S {}
+ | ^^^^^^^^^^^^^^^^^^^^^^ `&mut S`
help: you likely meant to call the associated function `bar` for type `&mut S`, but the code as written calls associated function `bar` on type `S`
|
LL | let _ = <&mut S>::bar();
@@ -92,9 +104,13 @@
|
LL | struct S;
| ^^^^^^^^
- = help: the following other types implement trait `Trait2`:
- &S
- &mut S
+help: the following other types implement trait `Trait2`
+ --> $DIR/dont-suggest-borrowing-existing-borrow.rs:11:1
+ |
+LL | impl Trait2 for &S {}
+ | ^^^^^^^^^^^^^^^^^^ `&S`
+LL | impl Trait2 for &mut S {}
+ | ^^^^^^^^^^^^^^^^^^^^^^ `&mut S`
help: you likely meant to call the associated function `bar` for type `&S`, but the code as written calls associated function `bar` on type `S`
|
LL | let _ = <&S>::bar();
diff --git a/tests/ui/suggestions/dont-suggest-foreign-doc-hidden.stderr b/tests/ui/suggestions/dont-suggest-foreign-doc-hidden.stderr
index 7036708..e0444c9 100644
--- a/tests/ui/suggestions/dont-suggest-foreign-doc-hidden.stderr
+++ b/tests/ui/suggestions/dont-suggest-foreign-doc-hidden.stderr
@@ -43,10 +43,16 @@
LL | test5::<i32>();
| ^^^ the trait `Marker` is not implemented for `i32`
|
- = help: the following other types implement trait `Marker`:
- Baz
- Option<u32>
- Quux
+help: the following other types implement trait `Marker`
+ --> $DIR/auxiliary/hidden-struct.rs:31:1
+ |
+LL | impl Marker for Option<u32> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Option<u32>`
+...
+LL | impl Marker for Baz {}
+ | ^^^^^^^^^^^^^^^^^^^ `Baz`
+LL | impl Marker for Quux {}
+ | ^^^^^^^^^^^^^^^^^^^^ `Quux`
note: required by a bound in `test5`
--> $DIR/dont-suggest-foreign-doc-hidden.rs:22:13
|
diff --git a/tests/ui/suggestions/imm-ref-trait-object-literal-bound-regions.stderr b/tests/ui/suggestions/imm-ref-trait-object-literal-bound-regions.stderr
index 530d868..e25b9ce 100644
--- a/tests/ui/suggestions/imm-ref-trait-object-literal-bound-regions.stderr
+++ b/tests/ui/suggestions/imm-ref-trait-object-literal-bound-regions.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Trait` is implemented for `&mut S`
+help: the trait `Trait` is implemented for `&mut S`
+ --> $DIR/imm-ref-trait-object-literal-bound-regions.rs:7:1
+ |
+LL | impl<'a> Trait for &'a mut S {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: `for<'b> Trait` is implemented for `&'b mut S`, but not for `&'b S`
note: required by a bound in `foo`
--> $DIR/imm-ref-trait-object-literal-bound-regions.rs:11:20
diff --git a/tests/ui/suggestions/imm-ref-trait-object-literal.stderr b/tests/ui/suggestions/imm-ref-trait-object-literal.stderr
index 4b770d5..56cda84 100644
--- a/tests/ui/suggestions/imm-ref-trait-object-literal.stderr
+++ b/tests/ui/suggestions/imm-ref-trait-object-literal.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Trait` is implemented for `&mut S`
+help: the trait `Trait` is implemented for `&mut S`
+ --> $DIR/imm-ref-trait-object-literal.rs:5:1
+ |
+LL | impl<'a> Trait for &'a mut S {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `foo`
--> $DIR/imm-ref-trait-object-literal.rs:7:11
|
diff --git a/tests/ui/suggestions/impl-trait-return-trailing-semicolon.rs b/tests/ui/suggestions/impl-trait-return-trailing-semicolon.rs
index cd37413..3357fe6 100644
--- a/tests/ui/suggestions/impl-trait-return-trailing-semicolon.rs
+++ b/tests/ui/suggestions/impl-trait-return-trailing-semicolon.rs
@@ -5,6 +5,7 @@ impl Bar for i32 {}
struct Qux;
impl Bar for Qux {}
+//~^ HELP the following other types implement trait `Bar`
fn foo() -> impl Bar {
//~^ ERROR the trait bound `(): Bar` is not satisfied
@@ -14,7 +15,6 @@ fn foo() -> impl Bar {
fn bar() -> impl Bar {
//~^ ERROR the trait bound `(): Bar` is not satisfied
- //~| HELP the following other types implement trait `Bar`:
"";
}
diff --git a/tests/ui/suggestions/impl-trait-return-trailing-semicolon.stderr b/tests/ui/suggestions/impl-trait-return-trailing-semicolon.stderr
index e74c2c4..98008cb 100644
--- a/tests/ui/suggestions/impl-trait-return-trailing-semicolon.stderr
+++ b/tests/ui/suggestions/impl-trait-return-trailing-semicolon.stderr
@@ -1,5 +1,5 @@
error[E0277]: the trait bound `(): Bar` is not satisfied
- --> $DIR/impl-trait-return-trailing-semicolon.rs:9:13
+ --> $DIR/impl-trait-return-trailing-semicolon.rs:10:13
|
LL | fn foo() -> impl Bar {
| ^^^^^^^^ the trait `Bar` is not implemented for `()`
@@ -10,14 +10,19 @@
| this expression has type `{integer}`, which implements `Bar`
error[E0277]: the trait bound `(): Bar` is not satisfied
- --> $DIR/impl-trait-return-trailing-semicolon.rs:15:13
+ --> $DIR/impl-trait-return-trailing-semicolon.rs:16:13
|
LL | fn bar() -> impl Bar {
| ^^^^^^^^ the trait `Bar` is not implemented for `()`
|
- = help: the following other types implement trait `Bar`:
- Qux
- i32
+help: the following other types implement trait `Bar`
+ --> $DIR/impl-trait-return-trailing-semicolon.rs:3:1
+ |
+LL | impl Bar for i32 {}
+ | ^^^^^^^^^^^^^^^^ `i32`
+...
+LL | impl Bar for Qux {}
+ | ^^^^^^^^^^^^^^^^ `Qux`
error: aborting due to 2 previous errors
diff --git a/tests/ui/suggestions/issue-101623.stderr b/tests/ui/suggestions/issue-101623.stderr
index 0733e67..56858cd 100644
--- a/tests/ui/suggestions/issue-101623.stderr
+++ b/tests/ui/suggestions/issue-101623.stderr
@@ -7,8 +7,12 @@
| | the trait `Trait<'_>` is not implemented for `*mut ()`
| required by a bound introduced by this call
|
- = help: the trait `Trait<'_>` is not implemented for `*mut ()`
- but it is implemented for `()`
+help: the trait `Trait<'_>` is not implemented for `*mut ()`
+ but it is implemented for `()`
+ --> $DIR/issue-101623.rs:15:1
+ |
+LL | impl<'a> Trait<'a> for () {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `()`, found `*mut ()`
error: aborting due to 1 previous error
diff --git a/tests/ui/suggestions/issue-105645.stderr b/tests/ui/suggestions/issue-105645.stderr
index f717f8f..2b9a94d 100644
--- a/tests/ui/suggestions/issue-105645.stderr
+++ b/tests/ui/suggestions/issue-105645.stderr
@@ -6,7 +6,8 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `std::io::Write` is implemented for `&mut [u8]`
+help: the trait `std::io::Write` is implemented for `&mut [u8]`
+ --> $SRC_DIR/std/src/io/impls.rs:LL:COL
note: required by a bound in `foo`
--> $DIR/issue-105645.rs:8:21
|
diff --git a/tests/ui/suggestions/issue-84973-negative.stderr b/tests/ui/suggestions/issue-84973-negative.stderr
index ce838bc..9d3db26 100644
--- a/tests/ui/suggestions/issue-84973-negative.stderr
+++ b/tests/ui/suggestions/issue-84973-negative.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Tr` is implemented for `&f32`
+help: the trait `Tr` is implemented for `&f32`
+ --> $DIR/issue-84973-negative.rs:4:1
+ |
+LL | impl Tr for &f32 {}
+ | ^^^^^^^^^^^^^^^^
note: required by a bound in `bar`
--> $DIR/issue-84973-negative.rs:5:11
|
diff --git a/tests/ui/suggestions/issue-96223.stderr b/tests/ui/suggestions/issue-96223.stderr
index 89dd094..e064866 100644
--- a/tests/ui/suggestions/issue-96223.stderr
+++ b/tests/ui/suggestions/issue-96223.stderr
@@ -11,7 +11,11 @@
|
LL | pub struct EmptyBis<'a>(&'a [u8]);
| ^^^^^^^^^^^^^^^^^^^^^^^
- = help: the trait `Foo<'de>` is implemented for `Baz<T>`
+help: the trait `Foo<'de>` is implemented for `Baz<T>`
+ --> $DIR/issue-96223.rs:16:1
+ |
+LL | impl<'de, T> Foo<'de> for Baz<T> where T: Foo<'de> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required for `Baz<EmptyBis<'de>>` to implement `for<'de> Foo<'de>`
--> $DIR/issue-96223.rs:16:14
|
diff --git a/tests/ui/suggestions/issue-99080.stderr b/tests/ui/suggestions/issue-99080.stderr
index 9c385a7..93672ac 100644
--- a/tests/ui/suggestions/issue-99080.stderr
+++ b/tests/ui/suggestions/issue-99080.stderr
@@ -6,9 +6,16 @@
| |
| required by a bound introduced by this call
|
- = help: the following other types implement trait `Meow`:
- GlobalMeow
- LocalMeow
+help: the following other types implement trait `Meow`
+ --> $DIR/issue-99080.rs:16:1
+ |
+LL | impl Meow for LocalMeow {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^ `LocalMeow`
+ |
+ ::: $DIR/auxiliary/meow.rs:7:1
+ |
+LL | impl Meow for GlobalMeow {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^ `GlobalMeow`
note: required by a bound in `needs_meow`
--> $DIR/issue-99080.rs:7:18
|
diff --git a/tests/ui/suggestions/suggest-dereferencing-index.stderr b/tests/ui/suggestions/suggest-dereferencing-index.stderr
index 937f326..1e8beaa 100644
--- a/tests/ui/suggestions/suggest-dereferencing-index.stderr
+++ b/tests/ui/suggestions/suggest-dereferencing-index.stderr
@@ -5,9 +5,13 @@
| ^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `SliceIndex<[{integer}]>` is not implemented for `&usize`
- = help: the following other types implement trait `SliceIndex<T>`:
- `usize` implements `SliceIndex<ByteStr>`
- `usize` implements `SliceIndex<[T]>`
+help: the following other types implement trait `SliceIndex<T>`
+ --> $SRC_DIR/core/src/slice/index.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<[T]>`
+ --> $SRC_DIR/core/src/bstr/traits.rs:LL:COL
+ |
+ = note: `usize` implements `SliceIndex<ByteStr>`
= note: required for `[{integer}]` to implement `Index<&usize>`
= note: 1 redundant requirement hidden
= note: required for `[{integer}; 3]` to implement `Index<&usize>`
diff --git a/tests/ui/trait-bounds/ice-unsized-struct-arg-issue2-121424.stderr b/tests/ui/trait-bounds/ice-unsized-struct-arg-issue2-121424.stderr
index 3738bbf..398dc6e 100644
--- a/tests/ui/trait-bounds/ice-unsized-struct-arg-issue2-121424.stderr
+++ b/tests/ui/trait-bounds/ice-unsized-struct-arg-issue2-121424.stderr
@@ -4,7 +4,8 @@
LL | const MYSLICE_GOOD: &MySliceBool = &MySlice(true, [false]);
| ^^^^^^^^^^^ the trait `Copy` is not implemented for `[bool]`
|
- = help: the trait `Copy` is implemented for `[T; N]`
+help: the trait `Copy` is implemented for `[T; N]`
+ --> $SRC_DIR/core/src/array/mod.rs:LL:COL
note: required by a bound in `MySlice`
--> $DIR/ice-unsized-struct-arg-issue2-121424.rs:3:19
|
@@ -17,7 +18,8 @@
LL | const MYSLICE_GOOD: &MySliceBool = &MySlice(true, [false]);
| ^^^^^^^^^^^ the trait `Copy` is not implemented for `[bool]`
|
- = help: the trait `Copy` is implemented for `[T; N]`
+help: the trait `Copy` is implemented for `[T; N]`
+ --> $SRC_DIR/core/src/array/mod.rs:LL:COL
note: required by a bound in `MySlice`
--> $DIR/ice-unsized-struct-arg-issue2-121424.rs:3:19
|
diff --git a/tests/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 e7e55d0..5f8ea38 100644
--- a/tests/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-1.stderr
@@ -4,7 +4,8 @@
LL | f::<dyn X<Y = str>>();
| ^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `f`
--> $DIR/check-trait-object-bounds-1.rs:7:9
|
diff --git a/tests/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 5cc38e4..62c327b 100644
--- a/tests/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr
+++ b/tests/ui/traits/associated_type_bound/check-trait-object-bounds-4.stderr
@@ -4,7 +4,8 @@
LL | f::<dyn X<Y = str>>();
| ^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `str`
|
- = help: the trait `Clone` is implemented for `String`
+help: the trait `Clone` is implemented for `String`
+ --> $SRC_DIR/alloc/src/string.rs:LL:COL
note: required by a bound in `f`
--> $DIR/check-trait-object-bounds-4.rs:10:9
|
diff --git a/tests/ui/traits/bound/same-crate-name.stderr b/tests/ui/traits/bound/same-crate-name.stderr
index 71a8159..5266f93 100644
--- a/tests/ui/traits/bound/same-crate-name.stderr
+++ b/tests/ui/traits/bound/same-crate-name.stderr
@@ -12,7 +12,11 @@
LL | impl Bar for Foo {}
| ^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate `crate_a2` are being used?
- = help: the trait `main::a::Bar` is implemented for `ImplementsTraitForUsize<usize>`
+help: the trait `main::a::Bar` is implemented for `ImplementsTraitForUsize<usize>`
+ --> $DIR/auxiliary/crate_a1.rs:9:1
+ |
+LL | impl Bar for ImplementsTraitForUsize<usize> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `try_foo`
--> $DIR/auxiliary/crate_a1.rs:3:24
|
@@ -27,7 +31,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `main::a::Bar` is implemented for `ImplementsTraitForUsize<usize>`
+help: the trait `main::a::Bar` is implemented for `ImplementsTraitForUsize<usize>`
+ --> $DIR/auxiliary/crate_a1.rs:9:1
+ |
+LL | impl Bar for ImplementsTraitForUsize<usize> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `try_foo`
--> $DIR/auxiliary/crate_a1.rs:3:24
|
@@ -48,7 +56,11 @@
LL | impl Bar for ImplementsWrongTraitConditionally<isize> {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: perhaps two different versions of crate `crate_a2` are being used?
- = help: the trait `main::a::Bar` is implemented for `ImplementsTraitForUsize<usize>`
+help: the trait `main::a::Bar` is implemented for `ImplementsTraitForUsize<usize>`
+ --> $DIR/auxiliary/crate_a1.rs:9:1
+ |
+LL | impl Bar for ImplementsTraitForUsize<usize> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `try_foo`
--> $DIR/auxiliary/crate_a1.rs:3:24
|
@@ -63,7 +75,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `main::a::Bar` is implemented for `ImplementsTraitForUsize<usize>`
+help: the trait `main::a::Bar` is implemented for `ImplementsTraitForUsize<usize>`
+ --> $DIR/auxiliary/crate_a1.rs:9:1
+ |
+LL | impl Bar for ImplementsTraitForUsize<usize> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `try_foo`
--> $DIR/auxiliary/crate_a1.rs:3:24
|
diff --git a/tests/ui/traits/coercion-generic-bad.stderr b/tests/ui/traits/coercion-generic-bad.stderr
index 6af96b9..947e76a 100644
--- a/tests/ui/traits/coercion-generic-bad.stderr
+++ b/tests/ui/traits/coercion-generic-bad.stderr
@@ -4,8 +4,12 @@
LL | let s: Box<dyn Trait<isize>> = Box::new(Struct { person: "Fred" });
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
|
- = help: the trait `Trait<isize>` is not implemented for `Struct`
- but trait `Trait<&'static str>` is implemented for it
+help: the trait `Trait<isize>` is not implemented for `Struct`
+ but trait `Trait<&'static str>` is implemented for it
+ --> $DIR/coercion-generic-bad.rs:9:1
+ |
+LL | impl Trait<&'static str> for Struct {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `&'static str`, found `isize`
= note: required for the cast from `Box<Struct>` to `Box<dyn Trait<isize>>`
diff --git a/tests/ui/traits/default_auto_traits/maybe-bounds-in-dyn-traits.stderr b/tests/ui/traits/default_auto_traits/maybe-bounds-in-dyn-traits.stderr
index b96a291..f29950d 100644
--- a/tests/ui/traits/default_auto_traits/maybe-bounds-in-dyn-traits.stderr
+++ b/tests/ui/traits/default_auto_traits/maybe-bounds-in-dyn-traits.stderr
@@ -9,7 +9,11 @@
|
LL | struct NonLeakS;
| ^^^^^^^^^^^^^^^
- = help: the trait `bounds_check::LeakTr` is implemented for `LeakS`
+help: the trait `bounds_check::LeakTr` is implemented for `LeakS`
+ --> $DIR/maybe-bounds-in-dyn-traits.rs:62:5
+ |
+LL | impl LeakTr for LeakS {}
+ | ^^^^^^^^^^^^^^^^^^^^^
= note: required for the cast from `&NonLeakS` to `&dyn bounds_check::LeakTr + Leak`
error[E0038]: the trait `DynCompatCheck2` is not dyn compatible
diff --git a/tests/ui/traits/fn-pointer/bare-fn-no-impl-fn-ptr-99875.stderr b/tests/ui/traits/fn-pointer/bare-fn-no-impl-fn-ptr-99875.stderr
index ba0af76..7151302 100644
--- a/tests/ui/traits/fn-pointer/bare-fn-no-impl-fn-ptr-99875.stderr
+++ b/tests/ui/traits/fn-pointer/bare-fn-no-impl-fn-ptr-99875.stderr
@@ -25,7 +25,11 @@
| required by a bound introduced by this call
|
= help: the trait `Trait` is not implemented for closure `{closure@$DIR/bare-fn-no-impl-fn-ptr-99875.rs:16:11: 16:34}`
- = help: the trait `Trait` is implemented for fn pointer `fn(Argument) -> Return`
+help: the trait `Trait` is implemented for fn pointer `fn(Argument) -> Return`
+ --> $DIR/bare-fn-no-impl-fn-ptr-99875.rs:9:1
+ |
+LL | impl Trait for fn(Argument) -> Return {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `takes`
--> $DIR/bare-fn-no-impl-fn-ptr-99875.rs:11:18
|
diff --git a/tests/ui/traits/inheritance/repeated-supertrait-ambig.stderr b/tests/ui/traits/inheritance/repeated-supertrait-ambig.stderr
index 23cced2..e58f5c3 100644
--- a/tests/ui/traits/inheritance/repeated-supertrait-ambig.stderr
+++ b/tests/ui/traits/inheritance/repeated-supertrait-ambig.stderr
@@ -6,9 +6,14 @@
| |
| required by a bound introduced by this call
|
- = help: the following other types implement trait `CompareTo<T>`:
- `i64` implements `CompareTo<i64>`
- `i64` implements `CompareTo<u64>`
+help: the following other types implement trait `CompareTo<T>`
+ --> $DIR/repeated-supertrait-ambig.rs:15:1
+ |
+LL | impl CompareTo<i64> for i64 {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `i64` implements `CompareTo<i64>`
+...
+LL | impl CompareTo<u64> for i64 {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `i64` implements `CompareTo<u64>`
error[E0277]: the trait bound `C: CompareTo<i32>` is not satisfied
--> $DIR/repeated-supertrait-ambig.rs:30:15
@@ -29,9 +34,14 @@
LL | <dyn CompareToInts>::same_as(c, 22)
| ^^^^^^^^^^^^^^^^^ the trait `CompareTo<i32>` is not implemented for `dyn CompareToInts`
|
- = help: the following other types implement trait `CompareTo<T>`:
- `i64` implements `CompareTo<i64>`
- `i64` implements `CompareTo<u64>`
+help: the following other types implement trait `CompareTo<T>`
+ --> $DIR/repeated-supertrait-ambig.rs:15:1
+ |
+LL | impl CompareTo<i64> for i64 {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `i64` implements `CompareTo<i64>`
+...
+LL | impl CompareTo<u64> for i64 {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `i64` implements `CompareTo<u64>`
error[E0277]: the trait bound `C: CompareTo<i32>` is not satisfied
--> $DIR/repeated-supertrait-ambig.rs:38:24
@@ -54,9 +64,14 @@
| |
| required by a bound introduced by this call
|
- = help: the following other types implement trait `CompareTo<T>`:
- `i64` implements `CompareTo<i64>`
- `i64` implements `CompareTo<u64>`
+help: the following other types implement trait `CompareTo<T>`
+ --> $DIR/repeated-supertrait-ambig.rs:15:1
+ |
+LL | impl CompareTo<i64> for i64 {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `i64` implements `CompareTo<i64>`
+...
+LL | impl CompareTo<u64> for i64 {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ `i64` implements `CompareTo<u64>`
error: aborting due to 5 previous errors
diff --git a/tests/ui/traits/issue-79458.stderr b/tests/ui/traits/issue-79458.stderr
index 9e53ec8..c602e69 100644
--- a/tests/ui/traits/issue-79458.stderr
+++ b/tests/ui/traits/issue-79458.stderr
@@ -7,7 +7,8 @@
LL | bar: &'a mut T
| ^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `&mut T`
|
- = help: the trait `Clone` is implemented for `&T`
+help: the trait `Clone` is implemented for `&T`
+ --> $SRC_DIR/core/src/clone.rs:LL:COL
= note: `Clone` is implemented for `&T`, but not for `&mut T`
error: aborting due to 1 previous error
diff --git a/tests/ui/traits/issue-91594.stderr b/tests/ui/traits/issue-91594.stderr
index 04abd02..e629380 100644
--- a/tests/ui/traits/issue-91594.stderr
+++ b/tests/ui/traits/issue-91594.stderr
@@ -9,7 +9,11 @@
|
LL | struct Foo;
| ^^^^^^^^^^
- = help: the trait `HasComponent<<Foo as Component<Foo>>::Interface>` is implemented for `Foo`
+help: the trait `HasComponent<<Foo as Component<Foo>>::Interface>` is implemented for `Foo`
+ --> $DIR/issue-91594.rs:10:1
+ |
+LL | impl HasComponent<<Foo as Component<Foo>>::Interface> for Foo {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: required for `Foo` to implement `Component<Foo>`
--> $DIR/issue-91594.rs:13:27
|
diff --git a/tests/ui/traits/map-types.stderr b/tests/ui/traits/map-types.stderr
index b19b5d2..555e722 100644
--- a/tests/ui/traits/map-types.stderr
+++ b/tests/ui/traits/map-types.stderr
@@ -4,7 +4,11 @@
LL | let y: Box<dyn Map<usize, isize>> = Box::new(x);
| ^^^^^^^^^^^ the trait `Map<usize, isize>` is not implemented for `Box<dyn Map<isize, isize>>`
|
- = help: the trait `Map<K, V>` is implemented for `HashMap<K, V>`
+help: the trait `Map<K, V>` is implemented for `HashMap<K, V>`
+ --> $DIR/map-types.rs:10:1
+ |
+LL | impl<K, V> Map<K, V> for HashMap<K, V> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: required for the cast from `Box<Box<dyn Map<isize, isize>>>` to `Box<dyn Map<usize, isize>>`
error: aborting due to 1 previous error
diff --git a/tests/ui/traits/next-solver/assembly/ambiguity-due-to-uniquification-1.next.stderr b/tests/ui/traits/next-solver/assembly/ambiguity-due-to-uniquification-1.next.stderr
index 141a07b..a617801 100644
--- a/tests/ui/traits/next-solver/assembly/ambiguity-due-to-uniquification-1.next.stderr
+++ b/tests/ui/traits/next-solver/assembly/ambiguity-due-to-uniquification-1.next.stderr
@@ -5,7 +5,11 @@
| ^
|
= note: cannot satisfy `dyn D<&(), &()>: B<&()>`
- = help: the trait `B<C>` is implemented for `()`
+help: the trait `B<C>` is implemented for `()`
+ --> $DIR/ambiguity-due-to-uniquification-1.rs:9:1
+ |
+LL | impl<C> B<C> for () {}
+ | ^^^^^^^^^^^^^^^^^^^
note: required by a bound in `D::f`
--> $DIR/ambiguity-due-to-uniquification-1.rs:10:16
|
diff --git a/tests/ui/traits/next-solver/assembly/ambiguity-due-to-uniquification-2.next.stderr b/tests/ui/traits/next-solver/assembly/ambiguity-due-to-uniquification-2.next.stderr
index e75be1e..61c6ef9 100644
--- a/tests/ui/traits/next-solver/assembly/ambiguity-due-to-uniquification-2.next.stderr
+++ b/tests/ui/traits/next-solver/assembly/ambiguity-due-to-uniquification-2.next.stderr
@@ -5,7 +5,11 @@
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: cannot satisfy `impl Trait<'_> + Trait<'_>: Trait<'_>`
- = help: the trait `Trait<'t>` is implemented for `()`
+help: the trait `Trait<'t>` is implemented for `()`
+ --> $DIR/ambiguity-due-to-uniquification-2.rs:9:1
+ |
+LL | impl<'t> Trait<'t> for () {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `impls_trait`
--> $DIR/ambiguity-due-to-uniquification-2.rs:13:23
|
diff --git a/tests/ui/traits/next-solver/assembly/ambiguity-due-to-uniquification-3.next.stderr b/tests/ui/traits/next-solver/assembly/ambiguity-due-to-uniquification-3.next.stderr
index 7fa8905..fb96da3 100644
--- a/tests/ui/traits/next-solver/assembly/ambiguity-due-to-uniquification-3.next.stderr
+++ b/tests/ui/traits/next-solver/assembly/ambiguity-due-to-uniquification-3.next.stderr
@@ -5,7 +5,11 @@
| ^^^^^^^^^^^^^^^^^^^
|
= note: cannot satisfy `dyn Object<&(), &()>: Trait<&()>`
- = help: the trait `Trait<T>` is implemented for `()`
+help: the trait `Trait<T>` is implemented for `()`
+ --> $DIR/ambiguity-due-to-uniquification-3.rs:17:1
+ |
+LL | impl<T> Trait<T> for () {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `impls_trait`
--> $DIR/ambiguity-due-to-uniquification-3.rs:24:19
|
diff --git a/tests/ui/traits/next-solver/const-param-placeholder.fail.stderr b/tests/ui/traits/next-solver/const-param-placeholder.fail.stderr
index 1637107..f935729 100644
--- a/tests/ui/traits/next-solver/const-param-placeholder.fail.stderr
+++ b/tests/ui/traits/next-solver/const-param-placeholder.fail.stderr
@@ -4,7 +4,11 @@
LL | needs_foo::<[T; N]>();
| ^^^^^^ the trait `Foo` is not implemented for `[T; N]`
|
- = help: the trait `Foo` is implemented for `[T; 1]`
+help: the trait `Foo` is implemented for `[T; 1]`
+ --> $DIR/const-param-placeholder.rs:11:1
+ |
+LL | impl<T> Foo for [T; 1] {}
+ | ^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `needs_foo`
--> $DIR/const-param-placeholder.rs:8:17
|
diff --git a/tests/ui/traits/next-solver/cycles/coinduction/incompleteness-unstable-result.with.stderr b/tests/ui/traits/next-solver/cycles/coinduction/incompleteness-unstable-result.with.stderr
index 8cad940..9b41a88 100644
--- a/tests/ui/traits/next-solver/cycles/coinduction/incompleteness-unstable-result.with.stderr
+++ b/tests/ui/traits/next-solver/cycles/coinduction/incompleteness-unstable-result.with.stderr
@@ -9,7 +9,16 @@
|
LL | struct A<T>(*const T);
| ^^^^^^^^^^^
- = help: the trait `Trait<U, V, D>` is implemented for `A<T>`
+help: the trait `Trait<U, V, D>` is implemented for `A<T>`
+ --> $DIR/incompleteness-unstable-result.rs:34:1
+ |
+LL | / impl<T, U, V, D> Trait<U, V, D> for A<T>
+LL | | where
+LL | | T: IncompleteGuidance<U, V>,
+LL | | A<T>: Trait<U, D, V>,
+LL | | B<T>: Trait<U, V, D>,
+LL | | (): ToU8<D>,
+ | |________________^
note: required for `A<X>` to implement `Trait<_, _, _>`
--> $DIR/incompleteness-unstable-result.rs:34:18
|
diff --git a/tests/ui/traits/next-solver/cycles/coinduction/incompleteness-unstable-result.without.stderr b/tests/ui/traits/next-solver/cycles/coinduction/incompleteness-unstable-result.without.stderr
index 8cad940..9b41a88 100644
--- a/tests/ui/traits/next-solver/cycles/coinduction/incompleteness-unstable-result.without.stderr
+++ b/tests/ui/traits/next-solver/cycles/coinduction/incompleteness-unstable-result.without.stderr
@@ -9,7 +9,16 @@
|
LL | struct A<T>(*const T);
| ^^^^^^^^^^^
- = help: the trait `Trait<U, V, D>` is implemented for `A<T>`
+help: the trait `Trait<U, V, D>` is implemented for `A<T>`
+ --> $DIR/incompleteness-unstable-result.rs:34:1
+ |
+LL | / impl<T, U, V, D> Trait<U, V, D> for A<T>
+LL | | where
+LL | | T: IncompleteGuidance<U, V>,
+LL | | A<T>: Trait<U, D, V>,
+LL | | B<T>: Trait<U, V, D>,
+LL | | (): ToU8<D>,
+ | |________________^
note: required for `A<X>` to implement `Trait<_, _, _>`
--> $DIR/incompleteness-unstable-result.rs:34:18
|
diff --git a/tests/ui/traits/next-solver/cycles/forced_ambiguity-use-head-maybe-cause.stderr b/tests/ui/traits/next-solver/cycles/forced_ambiguity-use-head-maybe-cause.stderr
index dd4049a..42b76a8 100644
--- a/tests/ui/traits/next-solver/cycles/forced_ambiguity-use-head-maybe-cause.stderr
+++ b/tests/ui/traits/next-solver/cycles/forced_ambiguity-use-head-maybe-cause.stderr
@@ -5,7 +5,20 @@
| ^^^^^^^ cannot infer type for struct `Head<_>`
|
= note: cannot satisfy `Head<_>: Trait`
- = help: the trait `Trait` is implemented for `Head<T>`
+help: the following types implement trait `Trait`
+ --> $DIR/forced_ambiguity-use-head-maybe-cause.rs:23:1
+ |
+LL | / impl<T> Trait for Head<T>
+LL | | where
+LL | | Root<T>: Trait,
+LL | | T: Trait, // ambiguous
+ | |_____________^ `Head<T>`
+...
+LL | / impl<T> Trait for Head<T>
+LL | | where
+LL | | Error<T>: Trait,
+LL | | NotImplemented<T>: Trait,
+ | |_____________________________^ `Head<T>`
note: required for `Root<_>` to implement `Trait`
--> $DIR/forced_ambiguity-use-head-maybe-cause.rs:18:9
|
diff --git a/tests/ui/traits/next-solver/cycles/inductive-cycle-but-err.stderr b/tests/ui/traits/next-solver/cycles/inductive-cycle-but-err.stderr
index 12a26a1..8b24e68 100644
--- a/tests/ui/traits/next-solver/cycles/inductive-cycle-but-err.stderr
+++ b/tests/ui/traits/next-solver/cycles/inductive-cycle-but-err.stderr
@@ -21,7 +21,18 @@
|
LL | struct MultipleCandidates;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
- = help: the trait `Trait` is implemented for `MultipleCandidates`
+help: the following other types implement trait `Trait`
+ --> $DIR/inductive-cycle-but-err.rs:26:1
+ |
+LL | / impl Trait for MultipleCandidates
+LL | | where
+LL | | MultipleNested: Trait
+ | |_________________________^ `MultipleCandidates`
+...
+LL | / impl Trait for MultipleCandidates
+LL | | where
+LL | | MultipleNested: Trait,
+ | |__________________________^ `MultipleCandidates`
note: required by a bound in `impls_trait`
--> $DIR/inductive-cycle-but-err.rs:51:19
|
diff --git a/tests/ui/traits/next-solver/cycles/normalizes-to-is-not-productive.stderr b/tests/ui/traits/next-solver/cycles/normalizes-to-is-not-productive.stderr
index 4a87aa3..f679b94 100644
--- a/tests/ui/traits/next-solver/cycles/normalizes-to-is-not-productive.stderr
+++ b/tests/ui/traits/next-solver/cycles/normalizes-to-is-not-productive.stderr
@@ -9,7 +9,11 @@
|
LL | struct Foo;
| ^^^^^^^^^^
- = help: the trait `Bound` is implemented for `u32`
+help: the trait `Bound` is implemented for `u32`
+ --> $DIR/normalizes-to-is-not-productive.rs:11:1
+ |
+LL | impl Bound for u32 {
+ | ^^^^^^^^^^^^^^^^^^
note: required for `Foo` to implement `Trait<T>`
--> $DIR/normalizes-to-is-not-productive.rs:23:19
|
@@ -36,7 +40,11 @@
|
LL | struct Foo;
| ^^^^^^^^^^
- = help: the trait `Bound` is implemented for `u32`
+help: the trait `Bound` is implemented for `u32`
+ --> $DIR/normalizes-to-is-not-productive.rs:11:1
+ |
+LL | impl Bound for u32 {
+ | ^^^^^^^^^^^^^^^^^^
note: required by a bound in `impls_bound`
--> $DIR/normalizes-to-is-not-productive.rs:27:19
|
diff --git a/tests/ui/traits/next-solver/unevaluated-const-impl-trait-ref.fails.stderr b/tests/ui/traits/next-solver/unevaluated-const-impl-trait-ref.fails.stderr
index efdc9f8..8202b6e 100644
--- a/tests/ui/traits/next-solver/unevaluated-const-impl-trait-ref.fails.stderr
+++ b/tests/ui/traits/next-solver/unevaluated-const-impl-trait-ref.fails.stderr
@@ -4,9 +4,13 @@
LL | needs::<1>();
| ^ the trait `Trait<1>` is not implemented for `()`
|
- = help: the following other types implement trait `Trait<N>`:
- `()` implements `Trait<0>`
- `()` implements `Trait<2>`
+help: the following other types implement trait `Trait<N>`
+ --> $DIR/unevaluated-const-impl-trait-ref.rs:7:1
+ |
+LL | impl Trait<{ 1 - 1 }> for () {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `()` implements `Trait<0>`
+LL | impl Trait<{ 1 + 1 }> for () {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `()` implements `Trait<2>`
note: required by a bound in `needs`
--> $DIR/unevaluated-const-impl-trait-ref.rs:10:38
|
diff --git a/tests/ui/traits/overflow-computing-ambiguity.stderr b/tests/ui/traits/overflow-computing-ambiguity.stderr
index f3e91a2..ab59f14 100644
--- a/tests/ui/traits/overflow-computing-ambiguity.stderr
+++ b/tests/ui/traits/overflow-computing-ambiguity.stderr
@@ -5,9 +5,14 @@
| ^^^^^ cannot infer type of the type parameter `T` declared on the function `hello`
|
= note: cannot satisfy `_: Hello`
- = help: the following types implement trait `Hello`:
- Foo<'a, &'a T>
- Foo<'static, i32>
+help: the following types implement trait `Hello`
+ --> $DIR/overflow-computing-ambiguity.rs:8:1
+ |
+LL | impl<'a, T> Hello for Foo<'a, &'a T> where Foo<'a, T>: Hello {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Foo<'a, &'a T>`
+LL |
+LL | impl Hello for Foo<'static, i32> {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Foo<'static, i32>`
note: required by a bound in `hello`
--> $DIR/overflow-computing-ambiguity.rs:12:13
|
diff --git a/tests/ui/traits/reservation-impl/no-use.next.stderr b/tests/ui/traits/reservation-impl/no-use.next.stderr
index aa7b51d..772e360 100644
--- a/tests/ui/traits/reservation-impl/no-use.next.stderr
+++ b/tests/ui/traits/reservation-impl/no-use.next.stderr
@@ -3,8 +3,6 @@
|
LL | <() as MyTrait>::foo(&());
| ^^ the trait `MyTrait` is not implemented for `()`
- |
- = help: the trait `MyTrait` is implemented for `()`
error: aborting due to 1 previous error
diff --git a/tests/ui/traits/reservation-impl/no-use.old.stderr b/tests/ui/traits/reservation-impl/no-use.old.stderr
index aa7b51d..772e360 100644
--- a/tests/ui/traits/reservation-impl/no-use.old.stderr
+++ b/tests/ui/traits/reservation-impl/no-use.old.stderr
@@ -3,8 +3,6 @@
|
LL | <() as MyTrait>::foo(&());
| ^^ the trait `MyTrait` is not implemented for `()`
- |
- = help: the trait `MyTrait` is implemented for `()`
error: aborting due to 1 previous error
diff --git a/tests/ui/traits/suggest-dereferences/invalid-suggest-deref-issue-127590.stderr b/tests/ui/traits/suggest-dereferences/invalid-suggest-deref-issue-127590.stderr
index f0957e5..103fb7b 100644
--- a/tests/ui/traits/suggest-dereferences/invalid-suggest-deref-issue-127590.stderr
+++ b/tests/ui/traits/suggest-dereferences/invalid-suggest-deref-issue-127590.stderr
@@ -23,9 +23,11 @@
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&std::slice::Iter<'_, {integer}>` is not an iterator
|
= help: the trait `Iterator` is not implemented for `&std::slice::Iter<'_, {integer}>`
- = help: the trait `Iterator` is implemented for `std::slice::Iter<'_, T>`
+help: the trait `Iterator` is implemented for `std::slice::Iter<'_, T>`
+ --> $SRC_DIR/core/src/slice/iter.rs:LL:COL
= note: required for `Zip<std::slice::Iter<'_, {integer}>, &std::slice::Iter<'_, {integer}>>` to implement `Iterator`
= note: required for `Zip<std::slice::Iter<'_, {integer}>, &std::slice::Iter<'_, {integer}>>` to implement `IntoIterator`
+ = note: this error originates in the macro `iterator` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: `&std::slice::Iter<'_, {integer}>` is not an iterator
--> $DIR/invalid-suggest-deref-issue-127590.rs:13:54
@@ -52,9 +54,11 @@
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&std::slice::Iter<'_, {integer}>` is not an iterator
|
= help: the trait `Iterator` is not implemented for `&std::slice::Iter<'_, {integer}>`
- = help: the trait `Iterator` is implemented for `std::slice::Iter<'_, T>`
+help: the trait `Iterator` is implemented for `std::slice::Iter<'_, T>`
+ --> $SRC_DIR/core/src/slice/iter.rs:LL:COL
= note: required for `Zip<std::slice::Iter<'_, {integer}>, &std::slice::Iter<'_, {integer}>>` to implement `Iterator`
= note: required for `Zip<std::slice::Iter<'_, {integer}>, &std::slice::Iter<'_, {integer}>>` to implement `IntoIterator`
+ = note: this error originates in the macro `iterator` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 4 previous errors
diff --git a/tests/ui/traits/suggest-dereferences/multiple-1.stderr b/tests/ui/traits/suggest-dereferences/multiple-1.stderr
index 2517cc6..e289286 100644
--- a/tests/ui/traits/suggest-dereferences/multiple-1.stderr
+++ b/tests/ui/traits/suggest-dereferences/multiple-1.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Happy` is implemented for `&mut LDM`
+help: the trait `Happy` is implemented for `&mut LDM`
+ --> $DIR/multiple-1.rs:5:1
+ |
+LL | impl Happy for &mut LDM {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^
note: required by a bound in `foo`
--> $DIR/multiple-1.rs:45:26
|
diff --git a/tests/ui/traits/suggest-remove-deref-issue-140166.stderr b/tests/ui/traits/suggest-remove-deref-issue-140166.stderr
index 7c61f95..d619e83 100644
--- a/tests/ui/traits/suggest-remove-deref-issue-140166.stderr
+++ b/tests/ui/traits/suggest-remove-deref-issue-140166.stderr
@@ -6,7 +6,11 @@
| |
| required by this formatting parameter
|
- = help: the trait `Trait` is implemented for `Chars`
+help: the trait `Trait` is implemented for `Chars`
+ --> $DIR/suggest-remove-deref-issue-140166.rs:4:1
+ |
+LL | impl Trait for Chars {}
+ | ^^^^^^^^^^^^^^^^^^^^
note: required for `FlatMap<&Chars>` to implement `Debug`
--> $DIR/suggest-remove-deref-issue-140166.rs:7:16
|
diff --git a/tests/ui/try-block/try-block-bad-type.stderr b/tests/ui/try-block/try-block-bad-type.stderr
index 818ab49..cf1cd60 100644
--- a/tests/ui/try-block/try-block-bad-type.stderr
+++ b/tests/ui/try-block/try-block-bad-type.stderr
@@ -7,8 +7,9 @@
| this can't be annotated with `?` because it has type `Result<_, &str>`
|
= note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
- = help: the trait `From<&str>` is not implemented for `TryFromSliceError`
- but trait `From<Infallible>` is implemented for it
+help: the trait `From<&str>` is not implemented for `TryFromSliceError`
+ but trait `From<Infallible>` is implemented for it
+ --> $SRC_DIR/core/src/array/mod.rs:LL:COL
= help: for that trait implementation, expected `Infallible`, found `&str`
error[E0271]: type mismatch resolving `<Result<i32, i32> as Try>::Output == &str`
diff --git a/tests/ui/try-trait/bad-interconversion.stderr b/tests/ui/try-trait/bad-interconversion.stderr
index 6df0574..da5c4d0 100644
--- a/tests/ui/try-trait/bad-interconversion.stderr
+++ b/tests/ui/try-trait/bad-interconversion.stderr
@@ -9,9 +9,14 @@
| this can't be annotated with `?` because it has type `Result<_, i32>`
|
= note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
- = help: the following other types implement trait `From<T>`:
- `u8` implements `From<Char>`
- `u8` implements `From<bool>`
+help: the following other types implement trait `From<T>`
+ --> $SRC_DIR/core/src/convert/num.rs:LL:COL
+ |
+ = note: `u8` implements `From<bool>`
+ --> $SRC_DIR/core/src/ascii/ascii_char.rs:LL:COL
+ |
+ = note: `u8` implements `From<Char>`
+ = note: this error originates in the macro `impl_from` which comes from the expansion of the macro `into_int_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a function that returns `Result`
--> $DIR/bad-interconversion.rs:9:12
@@ -53,8 +58,9 @@
LL | ControlFlow::Continue(Err("hello")?)
| ^ this `?` produces `Result<Infallible, &str>`, which is incompatible with `ControlFlow<String>`
|
- = help: the trait `FromResidual<Result<Infallible, &str>>` is not implemented for `ControlFlow<String>`
- but trait `FromResidual<ControlFlow<String, Infallible>>` is implemented for it
+help: the trait `FromResidual<Result<Infallible, &str>>` is not implemented for `ControlFlow<String>`
+ but trait `FromResidual<ControlFlow<String, Infallible>>` is implemented for it
+ --> $SRC_DIR/core/src/ops/control_flow.rs:LL:COL
= help: for that trait implementation, expected `ControlFlow<String, Infallible>`, found `Result<Infallible, &str>`
error[E0277]: the `?` operator can only be used on `ControlFlow`s in a function that returns `ControlFlow`
@@ -65,8 +71,9 @@
LL | Some(3)?;
| ^ this `?` produces `Option<Infallible>`, which is incompatible with `ControlFlow<u64>`
|
- = help: the trait `FromResidual<Option<Infallible>>` is not implemented for `ControlFlow<u64>`
- but trait `FromResidual<ControlFlow<u64, Infallible>>` is implemented for it
+help: the trait `FromResidual<Option<Infallible>>` is not implemented for `ControlFlow<u64>`
+ but trait `FromResidual<ControlFlow<u64, Infallible>>` is implemented for it
+ --> $SRC_DIR/core/src/ops/control_flow.rs:LL:COL
= help: for that trait implementation, expected `ControlFlow<u64, Infallible>`, found `Option<Infallible>`
error[E0277]: the `?` operator in a function that returns `ControlFlow<B, _>` can only be used on other `ControlFlow<B, _>`s (with the same Break type)
@@ -78,8 +85,9 @@
| ^ this `?` produces `ControlFlow<u8, Infallible>`, which is incompatible with `ControlFlow<i64>`
|
= note: unlike `Result`, there's no `From`-conversion performed for `ControlFlow`
- = help: the trait `FromResidual<ControlFlow<u8, _>>` is not implemented for `ControlFlow<i64>`
- but trait `FromResidual<ControlFlow<i64, _>>` is implemented for it
+help: the trait `FromResidual<ControlFlow<u8, _>>` is not implemented for `ControlFlow<i64>`
+ but trait `FromResidual<ControlFlow<i64, _>>` is implemented for it
+ --> $SRC_DIR/core/src/ops/control_flow.rs:LL:COL
= help: for that trait implementation, expected `i64`, found `u8`
error: aborting due to 8 previous errors
diff --git a/tests/ui/type-alias-impl-trait/constrain_in_projection.current.stderr b/tests/ui/type-alias-impl-trait/constrain_in_projection.current.stderr
index 955ba69..fa36f58 100644
--- a/tests/ui/type-alias-impl-trait/constrain_in_projection.current.stderr
+++ b/tests/ui/type-alias-impl-trait/constrain_in_projection.current.stderr
@@ -4,8 +4,12 @@
LL | let x = <Foo as Trait<Bar>>::Assoc::default();
| ^^^ unsatisfied trait bound
|
- = help: the trait `Trait<Bar>` is not implemented for `Foo`
- but trait `Trait<()>` is implemented for it
+help: the trait `Trait<Bar>` is not implemented for `Foo`
+ but trait `Trait<()>` is implemented for it
+ --> $DIR/constrain_in_projection.rs:19:1
+ |
+LL | impl Trait<()> for Foo {
+ | ^^^^^^^^^^^^^^^^^^^^^^
error[E0277]: the trait bound `Foo: Trait<Bar>` is not satisfied
--> $DIR/constrain_in_projection.rs:25:13
@@ -13,8 +17,12 @@
LL | let x = <Foo as Trait<Bar>>::Assoc::default();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
|
- = help: the trait `Trait<Bar>` is not implemented for `Foo`
- but trait `Trait<()>` is implemented for it
+help: the trait `Trait<Bar>` is not implemented for `Foo`
+ but trait `Trait<()>` is implemented for it
+ --> $DIR/constrain_in_projection.rs:19:1
+ |
+LL | impl Trait<()> for Foo {
+ | ^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to 2 previous errors
diff --git a/tests/ui/type-alias-impl-trait/constrain_in_projection2.current.stderr b/tests/ui/type-alias-impl-trait/constrain_in_projection2.current.stderr
index 4e7788b..d17a821 100644
--- a/tests/ui/type-alias-impl-trait/constrain_in_projection2.current.stderr
+++ b/tests/ui/type-alias-impl-trait/constrain_in_projection2.current.stderr
@@ -9,9 +9,14 @@
|
LL | struct Foo;
| ^^^^^^^^^^
- = help: the following other types implement trait `Trait<T>`:
- `Foo` implements `Trait<()>`
- `Foo` implements `Trait<u32>`
+help: the following other types implement trait `Trait<T>`
+ --> $DIR/constrain_in_projection2.rs:18:1
+ |
+LL | impl Trait<()> for Foo {
+ | ^^^^^^^^^^^^^^^^^^^^^^ `Foo` implements `Trait<()>`
+...
+LL | impl Trait<u32> for Foo {
+ | ^^^^^^^^^^^^^^^^^^^^^^^ `Foo` implements `Trait<u32>`
error[E0277]: the trait bound `Foo: Trait<Bar>` is not satisfied
--> $DIR/constrain_in_projection2.rs:28:13
@@ -24,9 +29,14 @@
|
LL | struct Foo;
| ^^^^^^^^^^
- = help: the following other types implement trait `Trait<T>`:
- `Foo` implements `Trait<()>`
- `Foo` implements `Trait<u32>`
+help: the following other types implement trait `Trait<T>`
+ --> $DIR/constrain_in_projection2.rs:18:1
+ |
+LL | impl Trait<()> for Foo {
+ | ^^^^^^^^^^^^^^^^^^^^^^ `Foo` implements `Trait<()>`
+...
+LL | impl Trait<u32> for Foo {
+ | ^^^^^^^^^^^^^^^^^^^^^^^ `Foo` implements `Trait<u32>`
error: aborting due to 2 previous errors
diff --git a/tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound.stderr b/tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound.stderr
index 0ebf9f0..ee20c5e 100644
--- a/tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound.stderr
+++ b/tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound.stderr
@@ -4,7 +4,11 @@
LL | is_yay::<u32>();
| ^^^ the trait `Yay` is not implemented for `u32`
|
- = help: the trait `Yay` is implemented for `Foo`
+help: the trait `Yay` is implemented for `Foo`
+ --> $DIR/impl_trait_for_tait_bound.rs:7:1
+ |
+LL | impl Yay for Foo {}
+ | ^^^^^^^^^^^^^^^^
note: required by a bound in `is_yay`
--> $DIR/impl_trait_for_tait_bound.rs:17:14
|
diff --git a/tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.stderr b/tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.stderr
index 4fff9ad..cbd06a5 100644
--- a/tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.stderr
+++ b/tests/ui/type-alias-impl-trait/impl_trait_for_tait_bound2.stderr
@@ -4,7 +4,11 @@
LL | is_yay::<Foo>();
| ^^^ the trait `Yay` is not implemented for `Foo`
|
- = help: the trait `Yay` is implemented for `u32`
+help: the trait `Yay` is implemented for `u32`
+ --> $DIR/impl_trait_for_tait_bound2.rs:8:1
+ |
+LL | impl Yay for u32 {}
+ | ^^^^^^^^^^^^^^^^
note: required by a bound in `is_yay`
--> $DIR/impl_trait_for_tait_bound2.rs:15:14
|
diff --git a/tests/ui/type-alias-impl-trait/issue-60371.stderr b/tests/ui/type-alias-impl-trait/issue-60371.stderr
index 1c83b06..eef6571 100644
--- a/tests/ui/type-alias-impl-trait/issue-60371.stderr
+++ b/tests/ui/type-alias-impl-trait/issue-60371.stderr
@@ -14,7 +14,11 @@
LL | const FUN: fn() -> Self::Item = || ();
| ^^ the trait `Bug` is not implemented for `()`
|
- = help: the trait `Bug` is implemented for `&()`
+help: the trait `Bug` is implemented for `&()`
+ --> $DIR/issue-60371.rs:7:1
+ |
+LL | impl Bug for &() {
+ | ^^^^^^^^^^^^^^^^
error: aborting due to 2 previous errors
diff --git a/tests/ui/type-alias-impl-trait/nested-tait-inference.current.stderr b/tests/ui/type-alias-impl-trait/nested-tait-inference.current.stderr
index b19f34a..7c611e3 100644
--- a/tests/ui/type-alias-impl-trait/nested-tait-inference.current.stderr
+++ b/tests/ui/type-alias-impl-trait/nested-tait-inference.current.stderr
@@ -7,8 +7,12 @@
LL | ()
| -- return type was inferred to be `()` here
|
- = help: the trait `Foo<FooX>` is not implemented for `()`
- but trait `Foo<()>` is implemented for it
+help: the trait `Foo<FooX>` is not implemented for `()`
+ but trait `Foo<()>` is implemented for it
+ --> $DIR/nested-tait-inference.rs:15:1
+ |
+LL | impl Foo<()> for () {}
+ | ^^^^^^^^^^^^^^^^^^^
error: aborting due to 1 previous error
diff --git a/tests/ui/type-alias-impl-trait/nested-tait-inference2.current.stderr b/tests/ui/type-alias-impl-trait/nested-tait-inference2.current.stderr
index 27372ce..4cc69da 100644
--- a/tests/ui/type-alias-impl-trait/nested-tait-inference2.current.stderr
+++ b/tests/ui/type-alias-impl-trait/nested-tait-inference2.current.stderr
@@ -7,9 +7,13 @@
LL | ()
| -- return type was inferred to be `()` here
|
- = help: the following other types implement trait `Foo<A>`:
- `()` implements `Foo<()>`
- `()` implements `Foo<u32>`
+help: the following other types implement trait `Foo<A>`
+ --> $DIR/nested-tait-inference2.rs:14:1
+ |
+LL | impl Foo<()> for () {}
+ | ^^^^^^^^^^^^^^^^^^^ `()` implements `Foo<()>`
+LL | impl Foo<u32> for () {}
+ | ^^^^^^^^^^^^^^^^^^^^ `()` implements `Foo<u32>`
error: aborting due to 1 previous error
diff --git a/tests/ui/type-alias-impl-trait/self-referential-2.current.stderr b/tests/ui/type-alias-impl-trait/self-referential-2.current.stderr
index dca3ae0..2855c90 100644
--- a/tests/ui/type-alias-impl-trait/self-referential-2.current.stderr
+++ b/tests/ui/type-alias-impl-trait/self-referential-2.current.stderr
@@ -6,8 +6,10 @@
LL | 42_i32
| ------ return type was inferred to be `i32` here
|
- = help: the trait `PartialEq<Foo>` is not implemented for `i32`
- but trait `PartialEq<i32>` is implemented for it
+help: the trait `PartialEq<Foo>` is not implemented for `i32`
+ but trait `PartialEq<i32>` is implemented for it
+ --> $SRC_DIR/core/src/cmp.rs:LL:COL
+ = note: this error originates in the macro `partial_eq_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 1 previous error
diff --git a/tests/ui/type-alias-impl-trait/self-referential-3.stderr b/tests/ui/type-alias-impl-trait/self-referential-3.stderr
index d0b1d46..83fed16 100644
--- a/tests/ui/type-alias-impl-trait/self-referential-3.stderr
+++ b/tests/ui/type-alias-impl-trait/self-referential-3.stderr
@@ -8,7 +8,9 @@
| - return type was inferred to be `&i32` here
|
= help: the trait `PartialEq<Bar<'a, 'b>>` is not implemented for `&i32`
- = help: the trait `PartialEq` is implemented for `i32`
+help: the trait `PartialEq` is implemented for `i32`
+ --> $SRC_DIR/core/src/cmp.rs:LL:COL
+ = note: this error originates in the macro `partial_eq_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 1 previous error
diff --git a/tests/ui/type-alias-impl-trait/self-referential-4.stderr b/tests/ui/type-alias-impl-trait/self-referential-4.stderr
index 9253498..4176bf7 100644
--- a/tests/ui/type-alias-impl-trait/self-referential-4.stderr
+++ b/tests/ui/type-alias-impl-trait/self-referential-4.stderr
@@ -7,7 +7,9 @@
| - return type was inferred to be `&i32` here
|
= help: the trait `PartialEq<Bar<'b, 'static>>` is not implemented for `&i32`
- = help: the trait `PartialEq` is implemented for `i32`
+help: the trait `PartialEq` is implemented for `i32`
+ --> $SRC_DIR/core/src/cmp.rs:LL:COL
+ = note: this error originates in the macro `partial_eq_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: can't compare `&i32` with `Foo<'static, 'b>`
--> $DIR/self-referential-4.rs:13:31
@@ -18,7 +20,9 @@
| - return type was inferred to be `&i32` here
|
= help: the trait `PartialEq<Foo<'static, 'b>>` is not implemented for `&i32`
- = help: the trait `PartialEq` is implemented for `i32`
+help: the trait `PartialEq` is implemented for `i32`
+ --> $SRC_DIR/core/src/cmp.rs:LL:COL
+ = note: this error originates in the macro `partial_eq_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: can't compare `&i32` with `Moo<'static, 'a>`
--> $DIR/self-referential-4.rs:20:31
@@ -29,7 +33,9 @@
| - return type was inferred to be `&i32` here
|
= help: the trait `PartialEq<Moo<'static, 'a>>` is not implemented for `&i32`
- = help: the trait `PartialEq` is implemented for `i32`
+help: the trait `PartialEq` is implemented for `i32`
+ --> $SRC_DIR/core/src/cmp.rs:LL:COL
+ = note: this error originates in the macro `partial_eq_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 3 previous errors
diff --git a/tests/ui/type-alias-impl-trait/self-referential.stderr b/tests/ui/type-alias-impl-trait/self-referential.stderr
index 4bcf659..dc5b9ba 100644
--- a/tests/ui/type-alias-impl-trait/self-referential.stderr
+++ b/tests/ui/type-alias-impl-trait/self-referential.stderr
@@ -8,7 +8,9 @@
| - return type was inferred to be `&i32` here
|
= help: the trait `PartialEq<Bar<'b, 'a>>` is not implemented for `&i32`
- = help: the trait `PartialEq` is implemented for `i32`
+help: the trait `PartialEq` is implemented for `i32`
+ --> $SRC_DIR/core/src/cmp.rs:LL:COL
+ = note: this error originates in the macro `partial_eq_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: can't compare `&i32` with `(i32, Foo<'a, 'b>::{opaque#0}<'a, 'b>)`
--> $DIR/self-referential.rs:14:31
@@ -20,7 +22,9 @@
| ------- return type was inferred to be `(i32, &i32)` here
|
= help: the trait `PartialEq<(i32, Foo<'a, 'b>::{opaque#0}<'a, 'b>)>` is not implemented for `&i32`
- = help: the trait `PartialEq` is implemented for `i32`
+help: the trait `PartialEq` is implemented for `i32`
+ --> $SRC_DIR/core/src/cmp.rs:LL:COL
+ = note: this error originates in the macro `partial_eq_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: can't compare `&i32` with `(i32, Moo<'b, 'a>::{opaque#0}<'b, 'a>)`
--> $DIR/self-referential.rs:22:31
@@ -32,7 +36,9 @@
| ------- return type was inferred to be `(i32, &i32)` here
|
= help: the trait `PartialEq<(i32, Moo<'b, 'a>::{opaque#0}<'b, 'a>)>` is not implemented for `&i32`
- = help: the trait `PartialEq` is implemented for `i32`
+help: the trait `PartialEq` is implemented for `i32`
+ --> $SRC_DIR/core/src/cmp.rs:LL:COL
+ = note: this error originates in the macro `partial_eq_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 3 previous errors
diff --git a/tests/ui/type/type-check-defaults.stderr b/tests/ui/type/type-check-defaults.stderr
index bbe93a0..4eab611 100644
--- a/tests/ui/type/type-check-defaults.stderr
+++ b/tests/ui/type/type-check-defaults.stderr
@@ -83,16 +83,22 @@
| ^^^^^^^ no implementation for `i32 + u8`
|
= help: the trait `Add<u8>` is not implemented for `i32`
- = help: the following other types implement trait `Add<Rhs>`:
- `&i32` implements `Add<i32>`
- `&i32` implements `Add`
- `i32` implements `Add<&i32>`
- `i32` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&i32` implements `Add<i32>`
+ |
+ = note: `&i32` implements `Add`
+ |
+ = note: `i32` implements `Add<&i32>`
+ |
+ = note: `i32` implements `Add`
note: required by a bound in `ProjectionPred`
--> $DIR/type-check-defaults.rs:24:66
|
LL | trait ProjectionPred<T:Iterator = IntoIter<i32>> where T::Item : Add<u8> {}
| ^^^^^^^ required by this bound in `ProjectionPred`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 7 previous errors
diff --git a/tests/ui/typeck/foreign_struct_trait_unimplemented.stderr b/tests/ui/typeck/foreign_struct_trait_unimplemented.stderr
index 70de107..f96d314 100644
--- a/tests/ui/typeck/foreign_struct_trait_unimplemented.stderr
+++ b/tests/ui/typeck/foreign_struct_trait_unimplemented.stderr
@@ -6,7 +6,11 @@
| |
| required by a bound introduced by this call
|
- = help: the trait `Test` is implemented for `A`
+help: the trait `Test` is implemented for `A`
+ --> $DIR/foreign_struct_trait_unimplemented.rs:8:1
+ |
+LL | impl Test for A {}
+ | ^^^^^^^^^^^^^^^
note: required by a bound in `needs_test`
--> $DIR/foreign_struct_trait_unimplemented.rs:10:23
|
diff --git a/tests/ui/typeck/issue-81293.stderr b/tests/ui/typeck/issue-81293.stderr
index 82661fc..8318d31 100644
--- a/tests/ui/typeck/issue-81293.stderr
+++ b/tests/ui/typeck/issue-81293.stderr
@@ -20,11 +20,17 @@
| ^ no implementation for `usize + u16`
|
= help: the trait `Add<u16>` is not implemented for `usize`
- = help: the following other types implement trait `Add<Rhs>`:
- `&usize` implements `Add<usize>`
- `&usize` implements `Add`
- `usize` implements `Add<&usize>`
- `usize` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&usize` implements `Add<usize>`
+ |
+ = note: `&usize` implements `Add`
+ |
+ = note: `usize` implements `Add<&usize>`
+ |
+ = note: `usize` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 3 previous errors
diff --git a/tests/ui/typeck/suggestions/suggest-similar-impls-for-root-obligation.stderr b/tests/ui/typeck/suggestions/suggest-similar-impls-for-root-obligation.stderr
index 5c0d987..e271f8d 100644
--- a/tests/ui/typeck/suggestions/suggest-similar-impls-for-root-obligation.stderr
+++ b/tests/ui/typeck/suggestions/suggest-similar-impls-for-root-obligation.stderr
@@ -4,8 +4,12 @@
LL | let _: Bar = ((),).into();
| ^^^^ the trait `Foo<'_>` is not implemented for `((),)`
|
- = help: the trait `Foo<'_>` is not implemented for `((),)`
- but it is implemented for `()`
+help: the trait `Foo<'_>` is not implemented for `((),)`
+ but it is implemented for `()`
+ --> $DIR/suggest-similar-impls-for-root-obligation.rs:3:1
+ |
+LL | impl<'s> Foo<'s> for () {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^
= help: for that trait implementation, expected `()`, found `((),)`
note: required for `Bar` to implement `From<((),)>`
--> $DIR/suggest-similar-impls-for-root-obligation.rs:7:22
diff --git a/tests/ui/ufcs/ufcs-qpath-self-mismatch.stderr b/tests/ui/ufcs/ufcs-qpath-self-mismatch.stderr
index edee7c4..352638d 100644
--- a/tests/ui/ufcs/ufcs-qpath-self-mismatch.stderr
+++ b/tests/ui/ufcs/ufcs-qpath-self-mismatch.stderr
@@ -5,11 +5,17 @@
| ^^^ no implementation for `i32 + u32`
|
= help: the trait `Add<u32>` is not implemented for `i32`
- = help: the following other types implement trait `Add<Rhs>`:
- `&i32` implements `Add<i32>`
- `&i32` implements `Add`
- `i32` implements `Add<&i32>`
- `i32` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&i32` implements `Add<i32>`
+ |
+ = note: `&i32` implements `Add`
+ |
+ = note: `i32` implements `Add<&i32>`
+ |
+ = note: `i32` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0308]: mismatched types
--> $DIR/ufcs-qpath-self-mismatch.rs:7:28
@@ -64,11 +70,17 @@
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no implementation for `i32 + u32`
|
= help: the trait `Add<u32>` is not implemented for `i32`
- = help: the following other types implement trait `Add<Rhs>`:
- `&i32` implements `Add<i32>`
- `&i32` implements `Add`
- `i32` implements `Add<&i32>`
- `i32` implements `Add`
+help: the following other types implement trait `Add<Rhs>`
+ --> $SRC_DIR/core/src/ops/arith.rs:LL:COL
+ |
+ = note: `&i32` implements `Add<i32>`
+ |
+ = note: `&i32` implements `Add`
+ |
+ = note: `i32` implements `Add<&i32>`
+ |
+ = note: `i32` implements `Add`
+ = note: this error originates in the macro `add_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 4 previous errors
diff --git a/tests/ui/wf/hir-wf-check-erase-regions.nll.stderr b/tests/ui/wf/hir-wf-check-erase-regions.nll.stderr
index dcade3a..853e443 100644
--- a/tests/ui/wf/hir-wf-check-erase-regions.nll.stderr
+++ b/tests/ui/wf/hir-wf-check-erase-regions.nll.stderr
@@ -5,7 +5,8 @@
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&'a T` is not an iterator
|
= help: the trait `Iterator` is not implemented for `&'a T`
- = help: the trait `Iterator` is implemented for `&mut I`
+help: the trait `Iterator` is implemented for `&mut I`
+ --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
= note: required for `Flatten<std::slice::Iter<'a, T>>` to implement `Iterator`
note: required by a bound in `std::iter::IntoIterator::IntoIter`
--> $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL
@@ -17,7 +18,8 @@
| ^^^^^^^^^^^^^ `&'a T` is not an iterator
|
= help: the trait `Iterator` is not implemented for `&'a T`
- = help: the trait `Iterator` is implemented for `&mut I`
+help: the trait `Iterator` is implemented for `&mut I`
+ --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
= note: required for `&'a T` to implement `IntoIterator`
note: required by a bound in `Flatten`
--> $SRC_DIR/core/src/iter/adapters/flatten.rs:LL:COL
@@ -29,7 +31,8 @@
| ^^^^^^^^^^^^^^ `&'a T` is not an iterator
|
= help: the trait `Iterator` is not implemented for `&'a T`
- = help: the trait `Iterator` is implemented for `&mut I`
+help: the trait `Iterator` is implemented for `&mut I`
+ --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
= note: required for `&'a T` to implement `IntoIterator`
note: required by a bound in `Flatten`
--> $SRC_DIR/core/src/iter/adapters/flatten.rs:LL:COL
@@ -41,7 +44,8 @@
| ^^^^^^^^^^^^^^ `&T` is not an iterator
|
= help: the trait `Iterator` is not implemented for `&T`
- = help: the trait `Iterator` is implemented for `&mut I`
+help: the trait `Iterator` is implemented for `&mut I`
+ --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
= note: required for `&T` to implement `IntoIterator`
error: aborting due to 4 previous errors
diff --git a/tests/ui/wf/hir-wf-check-erase-regions.polonius.stderr b/tests/ui/wf/hir-wf-check-erase-regions.polonius.stderr
index 55728aa..8a172ef 100644
--- a/tests/ui/wf/hir-wf-check-erase-regions.polonius.stderr
+++ b/tests/ui/wf/hir-wf-check-erase-regions.polonius.stderr
@@ -5,7 +5,8 @@
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&'a T` is not an iterator
|
= help: the trait `Iterator` is not implemented for `&'a T`
- = help: the trait `Iterator` is implemented for `&mut I`
+help: the trait `Iterator` is implemented for `&mut I`
+ --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
= note: required for `Flatten<std::slice::Iter<'a, T>>` to implement `Iterator`
note: required by a bound in `std::iter::IntoIterator::IntoIter`
--> $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL
@@ -17,7 +18,8 @@
| ^^^^^^^^^^^^^ `&'a T` is not an iterator
|
= help: the trait `Iterator` is not implemented for `&'a T`
- = help: the trait `Iterator` is implemented for `&mut I`
+help: the trait `Iterator` is implemented for `&mut I`
+ --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
= note: required for `&'a T` to implement `IntoIterator`
note: required by a bound in `Flatten`
--> $SRC_DIR/core/src/iter/adapters/flatten.rs:LL:COL
@@ -29,7 +31,8 @@
| ^^^^^^^^^^^^^^ `&'a T` is not an iterator
|
= help: the trait `Iterator` is not implemented for `&'a T`
- = help: the trait `Iterator` is implemented for `&mut I`
+help: the trait `Iterator` is implemented for `&mut I`
+ --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL
= note: required for `&'a T` to implement `IntoIterator`
note: required by a bound in `Flatten`
--> $SRC_DIR/core/src/iter/adapters/flatten.rs:LL:COL