From 1390220ff25d61a36795eacdab3ea104dac6d957 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Tue, 26 Jul 2022 01:37:06 +0000 Subject: Use impl generics when suggesting fix on copy impl --- .../missing-bound-in-manual-copy-impl-2.fixed | 19 +++++++++++++++++++ .../missing-bound-in-manual-copy-impl-2.rs | 19 +++++++++++++++++++ .../missing-bound-in-manual-copy-impl-2.stderr | 22 ++++++++++++++++++++++ .../missing-bound-in-manual-copy-impl.fixed | 9 +++++++++ .../missing-bound-in-manual-copy-impl.rs | 9 +++++++++ .../missing-bound-in-manual-copy-impl.stderr | 17 +++++++++++++++++ 6 files changed, 95 insertions(+) create mode 100644 src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.fixed create mode 100644 src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.rs create mode 100644 src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.stderr create mode 100644 src/test/ui/suggestions/missing-bound-in-manual-copy-impl.fixed create mode 100644 src/test/ui/suggestions/missing-bound-in-manual-copy-impl.rs create mode 100644 src/test/ui/suggestions/missing-bound-in-manual-copy-impl.stderr (limited to 'src/test') diff --git a/src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.fixed b/src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.fixed new file mode 100644 index 00000000000..691e7553a09 --- /dev/null +++ b/src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.fixed @@ -0,0 +1,19 @@ +// run-rustfix + +#[derive(Clone)] +struct Wrapper(T); + +struct OnlyCopyIfDisplay(std::marker::PhantomData); + +impl Clone for OnlyCopyIfDisplay { + fn clone(&self) -> Self { + OnlyCopyIfDisplay(std::marker::PhantomData) + } +} + +impl Copy for OnlyCopyIfDisplay {} + +impl Copy for Wrapper> {} +//~^ ERROR the trait `Copy` may not be implemented for this type + +fn main() {} diff --git a/src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.rs b/src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.rs new file mode 100644 index 00000000000..e3185e7eff8 --- /dev/null +++ b/src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.rs @@ -0,0 +1,19 @@ +// run-rustfix + +#[derive(Clone)] +struct Wrapper(T); + +struct OnlyCopyIfDisplay(std::marker::PhantomData); + +impl Clone for OnlyCopyIfDisplay { + fn clone(&self) -> Self { + OnlyCopyIfDisplay(std::marker::PhantomData) + } +} + +impl Copy for OnlyCopyIfDisplay {} + +impl Copy for Wrapper> {} +//~^ ERROR the trait `Copy` may not be implemented for this type + +fn main() {} diff --git a/src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.stderr b/src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.stderr new file mode 100644 index 00000000000..e0f405eedfa --- /dev/null +++ b/src/test/ui/suggestions/missing-bound-in-manual-copy-impl-2.stderr @@ -0,0 +1,22 @@ +error[E0204]: the trait `Copy` may not be implemented for this type + --> $DIR/missing-bound-in-manual-copy-impl-2.rs:16:9 + | +LL | struct Wrapper(T); + | - this field does not implement `Copy` +... +LL | impl Copy for Wrapper> {} + | ^^^^ + | +note: the `Copy` impl for `OnlyCopyIfDisplay` requires that `S: std::fmt::Display` + --> $DIR/missing-bound-in-manual-copy-impl-2.rs:4:19 + | +LL | struct Wrapper(T); + | ^ +help: consider restricting type parameter `S` + | +LL | impl Copy for Wrapper> {} + | +++++++++++++++++++ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0204`. diff --git a/src/test/ui/suggestions/missing-bound-in-manual-copy-impl.fixed b/src/test/ui/suggestions/missing-bound-in-manual-copy-impl.fixed new file mode 100644 index 00000000000..32a7215c5bd --- /dev/null +++ b/src/test/ui/suggestions/missing-bound-in-manual-copy-impl.fixed @@ -0,0 +1,9 @@ +// run-rustfix + +#[derive(Clone)] +struct Wrapper(T); + +impl Copy for Wrapper {} +//~^ ERROR the trait `Copy` may not be implemented for this type + +fn main() {} diff --git a/src/test/ui/suggestions/missing-bound-in-manual-copy-impl.rs b/src/test/ui/suggestions/missing-bound-in-manual-copy-impl.rs new file mode 100644 index 00000000000..c688f4d41ee --- /dev/null +++ b/src/test/ui/suggestions/missing-bound-in-manual-copy-impl.rs @@ -0,0 +1,9 @@ +// run-rustfix + +#[derive(Clone)] +struct Wrapper(T); + +impl Copy for Wrapper {} +//~^ ERROR the trait `Copy` may not be implemented for this type + +fn main() {} diff --git a/src/test/ui/suggestions/missing-bound-in-manual-copy-impl.stderr b/src/test/ui/suggestions/missing-bound-in-manual-copy-impl.stderr new file mode 100644 index 00000000000..218988511db --- /dev/null +++ b/src/test/ui/suggestions/missing-bound-in-manual-copy-impl.stderr @@ -0,0 +1,17 @@ +error[E0204]: the trait `Copy` may not be implemented for this type + --> $DIR/missing-bound-in-manual-copy-impl.rs:6:9 + | +LL | struct Wrapper(T); + | - this field does not implement `Copy` +LL | +LL | impl Copy for Wrapper {} + | ^^^^ + | +help: consider restricting type parameter `S` + | +LL | impl Copy for Wrapper {} + | ++++++ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0204`. -- cgit 1.4.1-3-g733a5