Rollup merge of #106072 - eopb:dyn-derive, r=estebank
fix: misleading "add dyn keyword before derive macro" suggestion Fixes #106071
This commit is contained in:
commit
d7fcd01f67
@ -3305,7 +3305,13 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
|||||||
let label = "add `dyn` keyword before this trait";
|
let label = "add `dyn` keyword before this trait";
|
||||||
let mut diag =
|
let mut diag =
|
||||||
rustc_errors::struct_span_err!(tcx.sess, self_ty.span, E0782, "{}", msg);
|
rustc_errors::struct_span_err!(tcx.sess, self_ty.span, E0782, "{}", msg);
|
||||||
diag.multipart_suggestion_verbose(label, sugg, Applicability::MachineApplicable);
|
if self_ty.span.can_be_used_for_suggestions() {
|
||||||
|
diag.multipart_suggestion_verbose(
|
||||||
|
label,
|
||||||
|
sugg,
|
||||||
|
Applicability::MachineApplicable,
|
||||||
|
);
|
||||||
|
}
|
||||||
// check if the impl trait that we are considering is a impl of a local trait
|
// check if the impl trait that we are considering is a impl of a local trait
|
||||||
self.maybe_lint_blanket_trait_impl(&self_ty, &mut diag);
|
self.maybe_lint_blanket_trait_impl(&self_ty, &mut diag);
|
||||||
diag.emit();
|
diag.emit();
|
||||||
|
5
tests/ui/traits/issue-106072.rs
Normal file
5
tests/ui/traits/issue-106072.rs
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#[derive(Clone)] //~ trait objects must include the `dyn` keyword
|
||||||
|
//~| trait objects must include the `dyn` keyword
|
||||||
|
struct Foo;
|
||||||
|
trait Foo {} //~ the name `Foo` is defined multiple times
|
||||||
|
fn main() {}
|
30
tests/ui/traits/issue-106072.stderr
Normal file
30
tests/ui/traits/issue-106072.stderr
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
error[E0428]: the name `Foo` is defined multiple times
|
||||||
|
--> $DIR/issue-106072.rs:4:1
|
||||||
|
|
|
||||||
|
LL | struct Foo;
|
||||||
|
| ----------- previous definition of the type `Foo` here
|
||||||
|
LL | trait Foo {}
|
||||||
|
| ^^^^^^^^^ `Foo` redefined here
|
||||||
|
|
|
||||||
|
= note: `Foo` must be defined only once in the type namespace of this module
|
||||||
|
|
||||||
|
error[E0782]: trait objects must include the `dyn` keyword
|
||||||
|
--> $DIR/issue-106072.rs:1:10
|
||||||
|
|
|
||||||
|
LL | #[derive(Clone)]
|
||||||
|
| ^^^^^
|
||||||
|
|
|
||||||
|
= note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
error[E0782]: trait objects must include the `dyn` keyword
|
||||||
|
--> $DIR/issue-106072.rs:1:10
|
||||||
|
|
|
||||||
|
LL | #[derive(Clone)]
|
||||||
|
| ^^^^^
|
||||||
|
|
|
||||||
|
= note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
|
Some errors have detailed explanations: E0428, E0782.
|
||||||
|
For more information about an error, try `rustc --explain E0428`.
|
Loading…
x
Reference in New Issue
Block a user