9479792cb4
Rustc of course already WF-checked the field types at the definition site, but for error tainting of consts to work properly, there needs to be an error emitted at the use site. Previously, with no use-site error, we proceeded with CTFE and ran into ICEs since we are running code with type errors. Emitting use-site errors also brings struct-like constructors more in line with fn-like constructors since they already emit use-site errors for WF issues.
152 lines
6.0 KiB
Plaintext
152 lines
6.0 KiB
Plaintext
error[E0204]: the trait `Copy` cannot be implemented for this type
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:9:17
|
|
|
|
|
LL | #[derive(Debug, Copy, Clone)]
|
|
| ^^^^
|
|
LL | pub struct AABB<K> {
|
|
LL | pub loc: Vector2<K>,
|
|
| ------------------- this field does not implement `Copy`
|
|
|
|
|
note: the `Copy` impl for `Vector2<K>` requires that `K: Debug`
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:11:14
|
|
|
|
|
LL | pub loc: Vector2<K>,
|
|
| ^^^^^^^^^^
|
|
= note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info)
|
|
help: consider restricting type parameter `K`
|
|
|
|
|
LL | pub struct AABB<K: Debug> {
|
|
| +++++++
|
|
|
|
error[E0277]: `K` doesn't implement `Debug`
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:11:14
|
|
|
|
|
LL | pub loc: Vector2<K>,
|
|
| ^^^^^^^^^^ `K` cannot be formatted using `{:?}` because it doesn't implement `Debug`
|
|
|
|
|
note: required by a bound in `Vector2`
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:4:23
|
|
|
|
|
LL | pub struct Vector2<T: Debug + Copy + Clone> {
|
|
| ^^^^^ required by this bound in `Vector2`
|
|
help: consider restricting type parameter `K`
|
|
|
|
|
LL | pub struct AABB<K: std::fmt::Debug> {
|
|
| +++++++++++++++++
|
|
|
|
error[E0277]: the trait bound `K: Copy` is not satisfied
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:11:14
|
|
|
|
|
LL | pub loc: Vector2<K>,
|
|
| ^^^^^^^^^^ the trait `Copy` is not implemented for `K`
|
|
|
|
|
note: required by a bound in `Vector2`
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:4:31
|
|
|
|
|
LL | pub struct Vector2<T: Debug + Copy + Clone> {
|
|
| ^^^^ required by this bound in `Vector2`
|
|
help: consider restricting type parameter `K`
|
|
|
|
|
LL | pub struct AABB<K: std::marker::Copy> {
|
|
| +++++++++++++++++++
|
|
|
|
error[E0277]: the trait bound `K: Copy` is not satisfied
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:11:5
|
|
|
|
|
LL | #[derive(Debug, Copy, Clone)]
|
|
| ----- in this derive macro expansion
|
|
LL | pub struct AABB<K> {
|
|
LL | pub loc: Vector2<K>,
|
|
| ^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `K`, which is required by `Vector2<K>: Debug`
|
|
|
|
|
note: required for `Vector2<K>` to implement `Debug`
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:3:10
|
|
|
|
|
LL | #[derive(Debug, Copy, Clone)]
|
|
| ^^^^^
|
|
LL | pub struct Vector2<T: Debug + Copy + Clone> {
|
|
| ---- unsatisfied trait bound introduced in this `derive` macro
|
|
= note: required for the cast from `&Vector2<K>` to `&dyn Debug`
|
|
= note: this error originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info)
|
|
help: consider restricting type parameter `K`
|
|
|
|
|
LL | pub struct AABB<K: std::marker::Copy> {
|
|
| +++++++++++++++++++
|
|
|
|
error[E0277]: `K` doesn't implement `Debug`
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:11:5
|
|
|
|
|
LL | #[derive(Debug, Copy, Clone)]
|
|
| ----- in this derive macro expansion
|
|
LL | pub struct AABB<K> {
|
|
LL | pub loc: Vector2<K>,
|
|
| ^^^^^^^^^^^^^^^^^^^ `K` cannot be formatted using `{:?}` because it doesn't implement `Debug`
|
|
|
|
|
= note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
|
|
help: consider restricting type parameter `K`
|
|
|
|
|
LL | pub struct AABB<K: std::fmt::Debug> {
|
|
| +++++++++++++++++
|
|
|
|
error[E0277]: the trait bound `K: Copy` is not satisfied
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:11:5
|
|
|
|
|
LL | #[derive(Debug, Copy, Clone)]
|
|
| ----- in this derive macro expansion
|
|
LL | pub struct AABB<K> {
|
|
LL | pub loc: Vector2<K>,
|
|
| ^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `K`
|
|
|
|
|
note: required by a bound in `Vector2`
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:4:31
|
|
|
|
|
LL | pub struct Vector2<T: Debug + Copy + Clone> {
|
|
| ^^^^ required by this bound in `Vector2`
|
|
= note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
|
|
help: consider restricting type parameter `K`
|
|
|
|
|
LL | pub struct AABB<K: std::marker::Copy> {
|
|
| +++++++++++++++++++
|
|
|
|
error[E0277]: `K` doesn't implement `Debug`
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:17:5
|
|
|
|
|
LL | #[derive(Debug, Copy, Clone)]
|
|
| ----- in this derive macro expansion
|
|
...
|
|
LL | pub size: Vector2<K>,
|
|
| ^^^^^^^^^^^^^^^^^^^^ `K` cannot be formatted using `{:?}` because it doesn't implement `Debug`
|
|
|
|
|
= note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
|
|
help: consider restricting type parameter `K`
|
|
|
|
|
LL | pub struct AABB<K: std::fmt::Debug> {
|
|
| +++++++++++++++++
|
|
|
|
error[E0277]: the trait bound `K: Copy` is not satisfied
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:17:5
|
|
|
|
|
LL | #[derive(Debug, Copy, Clone)]
|
|
| ----- in this derive macro expansion
|
|
...
|
|
LL | pub size: Vector2<K>,
|
|
| ^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `K`, which is required by `Vector2<K>: Clone`
|
|
|
|
|
note: required for `Vector2<K>` to implement `Clone`
|
|
--> $DIR/missing-bound-in-derive-copy-impl.rs:3:23
|
|
|
|
|
LL | #[derive(Debug, Copy, Clone)]
|
|
| ^^^^^
|
|
LL | pub struct Vector2<T: Debug + Copy + Clone> {
|
|
| ---- unsatisfied trait bound introduced in this `derive` macro
|
|
= note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
|
|
help: consider restricting type parameter `K`
|
|
|
|
|
LL | pub struct AABB<K: std::marker::Copy> {
|
|
| +++++++++++++++++++
|
|
|
|
error: aborting due to 8 previous errors
|
|
|
|
Some errors have detailed explanations: E0204, E0277.
|
|
For more information about an error, try `rustc --explain E0204`.
|