91b9ffeab0
In `report_fullfillment_errors` push back `T: Sized`, `T: WellFormed` and coercion errors to the end of the list. The pre-existing deduplication logic eliminates redundant errors better that way, keeping the resulting output with fewer errors than before, while also having more detail.
50 lines
2.0 KiB
Plaintext
50 lines
2.0 KiB
Plaintext
error[E0277]: the trait bound `U: Copy` is not satisfied
|
|
--> $DIR/wf-fn-where-clause.rs:8:24
|
|
|
|
|
LL | fn foo<T,U>() where T: ExtraCopy<U>
|
|
| ^^^^^^^^^^^^ the trait `Copy` is not implemented for `U`
|
|
|
|
|
note: required by a bound in `ExtraCopy`
|
|
--> $DIR/wf-fn-where-clause.rs:6:19
|
|
|
|
|
LL | trait ExtraCopy<T:Copy> { }
|
|
| ^^^^ required by this bound in `ExtraCopy`
|
|
help: consider further restricting type parameter `U`
|
|
|
|
|
LL | fn foo<T,U>() where T: ExtraCopy<U>, U: std::marker::Copy
|
|
| ++++++++++++++++++++++
|
|
|
|
error[E0038]: the trait `Copy` cannot be made into an object
|
|
--> $DIR/wf-fn-where-clause.rs:12:16
|
|
|
|
|
LL | fn bar() where Vec<dyn Copy>:, {}
|
|
| ^^^^^^^^^^^^^ `Copy` cannot be made into an object
|
|
|
|
|
= note: the trait cannot be made into an object because it requires `Self: Sized`
|
|
= note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
|
|
|
|
error[E0277]: the size for values of type `(dyn Copy + 'static)` cannot be known at compilation time
|
|
--> $DIR/wf-fn-where-clause.rs:12:16
|
|
|
|
|
LL | fn bar() where Vec<dyn Copy>:, {}
|
|
| ^^^^^^^^^^^^^ doesn't have a size known at compile-time
|
|
|
|
|
= help: the trait `Sized` is not implemented for `(dyn Copy + 'static)`
|
|
note: required by a bound in `Vec`
|
|
--> $DIR/wf-fn-where-clause.rs:16:12
|
|
|
|
|
LL | struct Vec<T> {
|
|
| ^ required by this bound in `Vec`
|
|
help: you could relax the implicit `Sized` bound on `T` if it were used through indirection like `&T` or `Box<T>`
|
|
--> $DIR/wf-fn-where-clause.rs:16:12
|
|
|
|
|
LL | struct Vec<T> {
|
|
| ^ this could be changed to `T: ?Sized`...
|
|
LL | t: T,
|
|
| - ...if indirection were used here: `Box<T>`
|
|
|
|
error: aborting due to 3 previous errors
|
|
|
|
Some errors have detailed explanations: E0038, E0277.
|
|
For more information about an error, try `rustc --explain E0038`.
|