Add test for issue #83017
This commit is contained in:
parent
9a35232611
commit
8f41de595d
39
src/test/ui/associated-type-bounds/issue-83017.rs
Normal file
39
src/test/ui/associated-type-bounds/issue-83017.rs
Normal file
@ -0,0 +1,39 @@
|
||||
#![feature(associated_type_bounds)]
|
||||
|
||||
trait TraitA<'a> {
|
||||
type AsA;
|
||||
}
|
||||
|
||||
trait TraitB<'a, 'b> {
|
||||
type AsB;
|
||||
}
|
||||
|
||||
trait TraitC<'a, 'b, 'c> {}
|
||||
|
||||
struct X;
|
||||
|
||||
impl<'a, 'b, 'c> TraitC<'a, 'b, 'c> for X {}
|
||||
|
||||
struct Y;
|
||||
|
||||
impl<'a, 'b> TraitB<'a, 'b> for Y {
|
||||
type AsB = X;
|
||||
}
|
||||
|
||||
struct Z;
|
||||
|
||||
impl<'a> TraitA<'a> for Z {
|
||||
type AsA = Y;
|
||||
}
|
||||
|
||||
fn foo<T>()
|
||||
where
|
||||
for<'a> T: TraitA<'a, AsA: for<'b> TraitB<'a, 'b, AsB: for<'c> TraitC<'a, 'b, 'c>>>,
|
||||
{
|
||||
}
|
||||
|
||||
fn main() {
|
||||
foo::<Z>();
|
||||
//~^ ERROR: the trait bound `for<'a, 'b> <Z as TraitA<'a>>::AsA: TraitB<'a, 'b>` is not satisfied
|
||||
//~| ERROR: the trait bound `for<'a, 'b, 'c> <<Z as TraitA<'a>>::AsA as TraitB<'a, 'b>>::AsB: TraitC<'a, 'b, 'c>` is not satisfied
|
||||
}
|
27
src/test/ui/associated-type-bounds/issue-83017.stderr
Normal file
27
src/test/ui/associated-type-bounds/issue-83017.stderr
Normal file
@ -0,0 +1,27 @@
|
||||
error[E0277]: the trait bound `for<'a, 'b> <Z as TraitA<'a>>::AsA: TraitB<'a, 'b>` is not satisfied
|
||||
--> $DIR/issue-83017.rs:36:5
|
||||
|
|
||||
LL | fn foo<T>()
|
||||
| --- required by a bound in this
|
||||
LL | where
|
||||
LL | for<'a> T: TraitA<'a, AsA: for<'b> TraitB<'a, 'b, AsB: for<'c> TraitC<'a, 'b, 'c>>>,
|
||||
| ------------------------------------------------------- required by this bound in `foo`
|
||||
...
|
||||
LL | foo::<Z>();
|
||||
| ^^^^^^^^ the trait `for<'a, 'b> TraitB<'a, 'b>` is not implemented for `<Z as TraitA<'a>>::AsA`
|
||||
|
||||
error[E0277]: the trait bound `for<'a, 'b, 'c> <<Z as TraitA<'a>>::AsA as TraitB<'a, 'b>>::AsB: TraitC<'a, 'b, 'c>` is not satisfied
|
||||
--> $DIR/issue-83017.rs:36:5
|
||||
|
|
||||
LL | fn foo<T>()
|
||||
| --- required by a bound in this
|
||||
LL | where
|
||||
LL | for<'a> T: TraitA<'a, AsA: for<'b> TraitB<'a, 'b, AsB: for<'c> TraitC<'a, 'b, 'c>>>,
|
||||
| -------------------------- required by this bound in `foo`
|
||||
...
|
||||
LL | foo::<Z>();
|
||||
| ^^^^^^^^ the trait `for<'a, 'b, 'c> TraitC<'a, 'b, 'c>` is not implemented for `<<Z as TraitA<'a>>::AsA as TraitB<'a, 'b>>::AsB`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
Loading…
x
Reference in New Issue
Block a user