diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2020-03-03 15:07:04 -0800 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2020-04-08 14:40:45 -0700 |
| commit | bd7ea5441ec6e447d8dae1e69de7ef4320a2aa4e (patch) | |
| tree | ee02aacbe98954838effb64a4d3929cec7f76be9 /src/test/ui/wf | |
| parent | 485c5fb6e1bf12cd11a8fac5ee94962e17cff74b (diff) | |
| download | rust-bd7ea5441ec6e447d8dae1e69de7ef4320a2aa4e.tar.gz rust-bd7ea5441ec6e447d8dae1e69de7ef4320a2aa4e.zip | |
Use `PredicateObligation`s instead of `Predicate`s
Keep more information about trait binding failures.
Diffstat (limited to 'src/test/ui/wf')
28 files changed, 33 insertions, 28 deletions
diff --git a/src/test/ui/wf/wf-const-type.stderr b/src/test/ui/wf/wf-const-type.stderr index 531aadc25dd..22f31c9f79f 100644 --- a/src/test/ui/wf/wf-const-type.stderr +++ b/src/test/ui/wf/wf-const-type.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `NotCopy: std::marker::Copy` is not satisfied --> $DIR/wf-const-type.rs:10:12 | LL | struct IsCopy<T:Copy> { t: T } - | --------------------- required by `IsCopy` + | ------ ---- required by this bound in `IsCopy` ... LL | const FOO: IsCopy<Option<NotCopy>> = IsCopy { t: None }; | ^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `NotCopy` diff --git a/src/test/ui/wf/wf-enum-bound.stderr b/src/test/ui/wf/wf-enum-bound.stderr index f70f67d414f..88d8c599022 100644 --- a/src/test/ui/wf/wf-enum-bound.stderr +++ b/src/test/ui/wf/wf-enum-bound.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `U: std::marker::Copy` is not satisfied --> $DIR/wf-enum-bound.rs:10:14 | LL | trait ExtraCopy<T:Copy> { } - | ----------------------- required by `ExtraCopy` + | --------- ---- required by this bound in `ExtraCopy` ... LL | where T: ExtraCopy<U> | ^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `U` diff --git a/src/test/ui/wf/wf-enum-fields-struct-variant.stderr b/src/test/ui/wf/wf-enum-fields-struct-variant.stderr index 8634b7dba5c..d45ab952987 100644 --- a/src/test/ui/wf/wf-enum-fields-struct-variant.stderr +++ b/src/test/ui/wf/wf-enum-fields-struct-variant.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `A: std::marker::Copy` is not satisfied --> $DIR/wf-enum-fields-struct-variant.rs:13:9 | LL | struct IsCopy<T:Copy> { - | --------------------- required by `IsCopy` + | ------ ---- required by this bound in `IsCopy` ... LL | f: IsCopy<A> | ^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `A` diff --git a/src/test/ui/wf/wf-enum-fields.stderr b/src/test/ui/wf/wf-enum-fields.stderr index a22b2d11a91..013407bcc68 100644 --- a/src/test/ui/wf/wf-enum-fields.stderr +++ b/src/test/ui/wf/wf-enum-fields.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `A: std::marker::Copy` is not satisfied --> $DIR/wf-enum-fields.rs:12:17 | LL | struct IsCopy<T:Copy> { - | --------------------- required by `IsCopy` + | ------ ---- required by this bound in `IsCopy` ... LL | SomeVariant(IsCopy<A>) | ^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `A` diff --git a/src/test/ui/wf/wf-fn-where-clause.rs b/src/test/ui/wf/wf-fn-where-clause.rs index 5fd567bd32d..adae536138b 100644 --- a/src/test/ui/wf/wf-fn-where-clause.rs +++ b/src/test/ui/wf/wf-fn-where-clause.rs @@ -13,5 +13,8 @@ fn bar() where Vec<dyn Copy>:, {} //~^ ERROR E0277 //~| ERROR E0038 +struct Vec<T> { + t: T, +} fn main() { } diff --git a/src/test/ui/wf/wf-fn-where-clause.stderr b/src/test/ui/wf/wf-fn-where-clause.stderr index cf1aeac7e3e..c5a7a5b0611 100644 --- a/src/test/ui/wf/wf-fn-where-clause.stderr +++ b/src/test/ui/wf/wf-fn-where-clause.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `U: std::marker::Copy` is not satisfied --> $DIR/wf-fn-where-clause.rs:8:24 | LL | trait ExtraCopy<T:Copy> { } - | ----------------------- required by `ExtraCopy` + | --------- ---- required by this bound in `ExtraCopy` LL | LL | fn foo<T,U>() where T: ExtraCopy<U> | ^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `U` @@ -17,10 +17,12 @@ error[E0277]: the size for values of type `(dyn std::marker::Copy + 'static)` ca | LL | fn bar() where Vec<dyn Copy>:, {} | ^^^^^^^^^^^^^ doesn't have a size known at compile-time +... +LL | struct Vec<T> { + | --- - required by this bound in `Vec` | = help: the trait `std::marker::Sized` is not implemented for `(dyn std::marker::Copy + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/ch19-04-advanced-types.html#dynamically-sized-types-and-the-sized-trait> - = note: required by `std::vec::Vec` error[E0038]: the trait `std::marker::Copy` cannot be made into an object --> $DIR/wf-fn-where-clause.rs:12:16 diff --git a/src/test/ui/wf/wf-impl-associated-type-trait.stderr b/src/test/ui/wf/wf-impl-associated-type-trait.stderr index d44a6f01a47..7312233aa54 100644 --- a/src/test/ui/wf/wf-impl-associated-type-trait.stderr +++ b/src/test/ui/wf/wf-impl-associated-type-trait.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `T: MyHash` is not satisfied --> $DIR/wf-impl-associated-type-trait.rs:17:5 | LL | pub struct MySet<T:MyHash> { - | -------------------------- required by `MySet` + | ----- ------ required by this bound in `MySet` ... LL | type Bar = MySet<T>; | ^^^^^^^^^^^^^^^^^^^^ the trait `MyHash` is not implemented for `T` diff --git a/src/test/ui/wf/wf-in-fn-arg.stderr b/src/test/ui/wf/wf-in-fn-arg.stderr index 907701440aa..67a5562b6bc 100644 --- a/src/test/ui/wf/wf-in-fn-arg.stderr +++ b/src/test/ui/wf/wf-in-fn-arg.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied --> $DIR/wf-in-fn-arg.rs:10:14 | LL | struct MustBeCopy<T:Copy> { - | ------------------------- required by `MustBeCopy` + | ---------- ---- required by this bound in `MustBeCopy` ... LL | fn bar<T>(_: &MustBeCopy<T>) | ^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `T` diff --git a/src/test/ui/wf/wf-in-fn-ret.stderr b/src/test/ui/wf/wf-in-fn-ret.stderr index 2ed4eecefe1..545ee559b3f 100644 --- a/src/test/ui/wf/wf-in-fn-ret.stderr +++ b/src/test/ui/wf/wf-in-fn-ret.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied --> $DIR/wf-in-fn-ret.rs:10:16 | LL | struct MustBeCopy<T:Copy> { - | ------------------------- required by `MustBeCopy` + | ---------- ---- required by this bound in `MustBeCopy` ... LL | fn bar<T>() -> MustBeCopy<T> | ^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `T` diff --git a/src/test/ui/wf/wf-in-fn-type-arg.stderr b/src/test/ui/wf/wf-in-fn-type-arg.stderr index 0c699838abd..0d8c6b14c56 100644 --- a/src/test/ui/wf/wf-in-fn-type-arg.stderr +++ b/src/test/ui/wf/wf-in-fn-type-arg.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied --> $DIR/wf-in-fn-type-arg.rs:9:5 | LL | struct MustBeCopy<T:Copy> { - | ------------------------- required by `MustBeCopy` + | ---------- ---- required by this bound in `MustBeCopy` ... LL | x: fn(MustBeCopy<T>) | ^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `T` diff --git a/src/test/ui/wf/wf-in-fn-type-ret.stderr b/src/test/ui/wf/wf-in-fn-type-ret.stderr index 3429ab89ffb..b7c8bf303f3 100644 --- a/src/test/ui/wf/wf-in-fn-type-ret.stderr +++ b/src/test/ui/wf/wf-in-fn-type-ret.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied --> $DIR/wf-in-fn-type-ret.rs:9:5 | LL | struct MustBeCopy<T:Copy> { - | ------------------------- required by `MustBeCopy` + | ---------- ---- required by this bound in `MustBeCopy` ... LL | x: fn() -> MustBeCopy<T> | ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `T` diff --git a/src/test/ui/wf/wf-in-fn-where-clause.stderr b/src/test/ui/wf/wf-in-fn-where-clause.stderr index d33749d795c..e54cc17ccbe 100644 --- a/src/test/ui/wf/wf-in-fn-where-clause.stderr +++ b/src/test/ui/wf/wf-in-fn-where-clause.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `U: std::marker::Copy` is not satisfied --> $DIR/wf-in-fn-where-clause.rs:10:14 | LL | trait MustBeCopy<T:Copy> { - | ------------------------ required by `MustBeCopy` + | ---------- ---- required by this bound in `MustBeCopy` ... LL | where T: MustBeCopy<U> | ^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `U` diff --git a/src/test/ui/wf/wf-in-obj-type-trait.stderr b/src/test/ui/wf/wf-in-obj-type-trait.stderr index 605dc497849..699c3fe1a63 100644 --- a/src/test/ui/wf/wf-in-obj-type-trait.stderr +++ b/src/test/ui/wf/wf-in-obj-type-trait.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied --> $DIR/wf-in-obj-type-trait.rs:11:5 | LL | struct MustBeCopy<T:Copy> { - | ------------------------- required by `MustBeCopy` + | ---------- ---- required by this bound in `MustBeCopy` ... LL | x: dyn Object<MustBeCopy<T>> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `T` diff --git a/src/test/ui/wf/wf-inherent-impl-method-where-clause.stderr b/src/test/ui/wf/wf-inherent-impl-method-where-clause.stderr index da2f8085a8a..172e763650a 100644 --- a/src/test/ui/wf/wf-inherent-impl-method-where-clause.stderr +++ b/src/test/ui/wf/wf-inherent-impl-method-where-clause.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `U: std::marker::Copy` is not satisfied --> $DIR/wf-inherent-impl-method-where-clause.rs:12:27 | LL | trait ExtraCopy<T:Copy> { } - | ----------------------- required by `ExtraCopy` + | --------- ---- required by this bound in `ExtraCopy` ... LL | fn foo(self) where T: ExtraCopy<U> | ^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `U` diff --git a/src/test/ui/wf/wf-inherent-impl-where-clause.stderr b/src/test/ui/wf/wf-inherent-impl-where-clause.stderr index 28d5bc62556..1ac5aba3cad 100644 --- a/src/test/ui/wf/wf-inherent-impl-where-clause.stderr +++ b/src/test/ui/wf/wf-inherent-impl-where-clause.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `U: std::marker::Copy` is not satisfied --> $DIR/wf-inherent-impl-where-clause.rs:11:29 | LL | trait ExtraCopy<T:Copy> { } - | ----------------------- required by `ExtraCopy` + | --------- ---- required by this bound in `ExtraCopy` ... LL | impl<T,U> Foo<T,U> where T: ExtraCopy<U> | ^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `U` diff --git a/src/test/ui/wf/wf-static-type.stderr b/src/test/ui/wf/wf-static-type.stderr index 05a628d7c3e..ec31710e861 100644 --- a/src/test/ui/wf/wf-static-type.stderr +++ b/src/test/ui/wf/wf-static-type.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `NotCopy: std::marker::Copy` is not satisfied --> $DIR/wf-static-type.rs:10:13 | LL | struct IsCopy<T:Copy> { t: T } - | --------------------- required by `IsCopy` + | ------ ---- required by this bound in `IsCopy` ... LL | static FOO: IsCopy<Option<NotCopy>> = IsCopy { t: None }; | ^^^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `NotCopy` diff --git a/src/test/ui/wf/wf-struct-bound.stderr b/src/test/ui/wf/wf-struct-bound.stderr index 07e569ddac1..848a2eb8bee 100644 --- a/src/test/ui/wf/wf-struct-bound.stderr +++ b/src/test/ui/wf/wf-struct-bound.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `U: std::marker::Copy` is not satisfied --> $DIR/wf-struct-bound.rs:10:14 | LL | trait ExtraCopy<T:Copy> { } - | ----------------------- required by `ExtraCopy` + | --------- ---- required by this bound in `ExtraCopy` ... LL | where T: ExtraCopy<U> | ^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `U` diff --git a/src/test/ui/wf/wf-struct-field.stderr b/src/test/ui/wf/wf-struct-field.stderr index f3bce24eace..a748a1c9c39 100644 --- a/src/test/ui/wf/wf-struct-field.stderr +++ b/src/test/ui/wf/wf-struct-field.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `A: std::marker::Copy` is not satisfied --> $DIR/wf-struct-field.rs:12:5 | LL | struct IsCopy<T:Copy> { - | --------------------- required by `IsCopy` + | ------ ---- required by this bound in `IsCopy` ... LL | data: IsCopy<A> | ^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `A` diff --git a/src/test/ui/wf/wf-trait-associated-type-bound.stderr b/src/test/ui/wf/wf-trait-associated-type-bound.stderr index 6cf7f2069b6..e568acabcd0 100644 --- a/src/test/ui/wf/wf-trait-associated-type-bound.stderr +++ b/src/test/ui/wf/wf-trait-associated-type-bound.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied --> $DIR/wf-trait-associated-type-bound.rs:10:17 | LL | trait ExtraCopy<T:Copy> { } - | ----------------------- required by `ExtraCopy` + | --------- ---- required by this bound in `ExtraCopy` ... LL | type Type1: ExtraCopy<T>; | ^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `T` diff --git a/src/test/ui/wf/wf-trait-associated-type-trait.stderr b/src/test/ui/wf/wf-trait-associated-type-trait.stderr index 93cb948cdbf..915f660f54d 100644 --- a/src/test/ui/wf/wf-trait-associated-type-trait.stderr +++ b/src/test/ui/wf/wf-trait-associated-type-trait.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `<Self as SomeTrait>::Type1: std::marker::Copy` is --> $DIR/wf-trait-associated-type-trait.rs:11:5 | LL | struct IsCopy<T:Copy> { x: T } - | --------------------- required by `IsCopy` + | ------ ---- required by this bound in `IsCopy` LL | LL | trait SomeTrait { | - help: consider further restricting the associated type: `where <Self as SomeTrait>::Type1: std::marker::Copy` diff --git a/src/test/ui/wf/wf-trait-bound.stderr b/src/test/ui/wf/wf-trait-bound.stderr index b8ffad6d180..0db29621e31 100644 --- a/src/test/ui/wf/wf-trait-bound.stderr +++ b/src/test/ui/wf/wf-trait-bound.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `U: std::marker::Copy` is not satisfied --> $DIR/wf-trait-bound.rs:10:14 | LL | trait ExtraCopy<T:Copy> { } - | ----------------------- required by `ExtraCopy` + | --------- ---- required by this bound in `ExtraCopy` ... LL | where T: ExtraCopy<U> | ^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `U` diff --git a/src/test/ui/wf/wf-trait-default-fn-arg.stderr b/src/test/ui/wf/wf-trait-default-fn-arg.stderr index 6a97d31cf3e..55fc202ca51 100644 --- a/src/test/ui/wf/wf-trait-default-fn-arg.stderr +++ b/src/test/ui/wf/wf-trait-default-fn-arg.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `Self: std::cmp::Eq` is not satisfied --> $DIR/wf-trait-default-fn-arg.rs:11:22 | LL | struct Bar<T:Eq+?Sized> { value: Box<T> } - | ----------------------- required by `Bar` + | --- -- required by this bound in `Bar` ... LL | fn bar(&self, x: &Bar<Self>) { | ^^^^^^^^^^ - help: consider further restricting `Self`: `where Self: std::cmp::Eq` diff --git a/src/test/ui/wf/wf-trait-default-fn-ret.stderr b/src/test/ui/wf/wf-trait-default-fn-ret.stderr index 36c1e486269..00b153317ab 100644 --- a/src/test/ui/wf/wf-trait-default-fn-ret.stderr +++ b/src/test/ui/wf/wf-trait-default-fn-ret.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `Self: std::cmp::Eq` is not satisfied --> $DIR/wf-trait-default-fn-ret.rs:11:22 | LL | struct Bar<T:Eq+?Sized> { value: Box<T> } - | ----------------------- required by `Bar` + | --- -- required by this bound in `Bar` ... LL | fn bar(&self) -> Bar<Self> { | ^^^^^^^^^- help: consider further restricting `Self`: `where Self: std::cmp::Eq` diff --git a/src/test/ui/wf/wf-trait-default-fn-where-clause.stderr b/src/test/ui/wf/wf-trait-default-fn-where-clause.stderr index 6b63feaba89..97210a8aa6a 100644 --- a/src/test/ui/wf/wf-trait-default-fn-where-clause.stderr +++ b/src/test/ui/wf/wf-trait-default-fn-where-clause.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `Self: std::cmp::Eq` is not satisfied --> $DIR/wf-trait-default-fn-where-clause.rs:11:31 | LL | trait Bar<T:Eq+?Sized> { } - | ---------------------- required by `Bar` + | --- -- required by this bound in `Bar` ... LL | fn bar<A>(&self) where A: Bar<Self> { | ^^^^^^^^^- help: consider further restricting `Self`: `, Self: std::cmp::Eq` diff --git a/src/test/ui/wf/wf-trait-fn-arg.stderr b/src/test/ui/wf/wf-trait-fn-arg.stderr index 69e2ab72912..190721492a2 100644 --- a/src/test/ui/wf/wf-trait-fn-arg.stderr +++ b/src/test/ui/wf/wf-trait-fn-arg.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `Self: std::cmp::Eq` is not satisfied --> $DIR/wf-trait-fn-arg.rs:10:22 | LL | struct Bar<T:Eq+?Sized> { value: Box<T> } - | ----------------------- required by `Bar` + | --- -- required by this bound in `Bar` ... LL | fn bar(&self, x: &Bar<Self>); | ^^^^^^^^^^ - help: consider further restricting `Self`: `where Self: std::cmp::Eq` diff --git a/src/test/ui/wf/wf-trait-fn-ret.stderr b/src/test/ui/wf/wf-trait-fn-ret.stderr index bfc6265662e..b8d10f4f396 100644 --- a/src/test/ui/wf/wf-trait-fn-ret.stderr +++ b/src/test/ui/wf/wf-trait-fn-ret.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `Self: std::cmp::Eq` is not satisfied --> $DIR/wf-trait-fn-ret.rs:10:22 | LL | struct Bar<T:Eq+?Sized> { value: Box<T> } - | ----------------------- required by `Bar` + | --- -- required by this bound in `Bar` ... LL | fn bar(&self) -> &Bar<Self>; | ^^^^^^^^^^- help: consider further restricting `Self`: `where Self: std::cmp::Eq` diff --git a/src/test/ui/wf/wf-trait-fn-where-clause.stderr b/src/test/ui/wf/wf-trait-fn-where-clause.stderr index ec8f02c9c4f..c138da032ce 100644 --- a/src/test/ui/wf/wf-trait-fn-where-clause.stderr +++ b/src/test/ui/wf/wf-trait-fn-where-clause.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `Self: std::cmp::Eq` is not satisfied --> $DIR/wf-trait-fn-where-clause.rs:10:49 | LL | struct Bar<T:Eq+?Sized> { value: Box<T> } - | ----------------------- required by `Bar` + | --- -- required by this bound in `Bar` ... LL | fn bar(&self) where Self: Sized, Bar<Self>: Copy; | ^^^^- help: consider further restricting `Self`: `, Self: std::cmp::Eq` diff --git a/src/test/ui/wf/wf-trait-superbound.stderr b/src/test/ui/wf/wf-trait-superbound.stderr index 88b4bec0451..5310939af9c 100644 --- a/src/test/ui/wf/wf-trait-superbound.stderr +++ b/src/test/ui/wf/wf-trait-superbound.stderr @@ -2,7 +2,7 @@ error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied --> $DIR/wf-trait-superbound.rs:9:21 | LL | trait ExtraCopy<T:Copy> { } - | ----------------------- required by `ExtraCopy` + | --------- ---- required by this bound in `ExtraCopy` LL | LL | trait SomeTrait<T>: ExtraCopy<T> { | ^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `T` |
