diff options
Diffstat (limited to 'src/test/ui/associated-types/associated-type-projection-from-multiple-supertraits.rs')
-rw-r--r-- | src/test/ui/associated-types/associated-type-projection-from-multiple-supertraits.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/test/ui/associated-types/associated-type-projection-from-multiple-supertraits.rs b/src/test/ui/associated-types/associated-type-projection-from-multiple-supertraits.rs new file mode 100644 index 000000000..df19332b6 --- /dev/null +++ b/src/test/ui/associated-types/associated-type-projection-from-multiple-supertraits.rs @@ -0,0 +1,43 @@ +// Test equality constraints in a where clause where the type being +// equated appears in a supertrait. + +pub trait Vehicle { + type Color; + + fn go(&self) { } +} + +pub trait Box { + type Color; + // + fn mail(&self) { } +} + +pub trait BoxCar : Box + Vehicle { +} + +fn dent<C:BoxCar>(c: C, color: C::Color) { + //~^ ERROR ambiguous associated type `Color` in bounds of `C` +} + +fn dent_object<COLOR>(c: dyn BoxCar<Color=COLOR>) { + //~^ ERROR ambiguous associated type + //~| ERROR the value of the associated types +} + +fn paint<C:BoxCar>(c: C, d: C::Color) { + //~^ ERROR ambiguous associated type `Color` in bounds of `C` +} + +fn dent_object_2<COLOR>(c: dyn BoxCar) where <dyn BoxCar as Vehicle>::Color = COLOR { + //~^ ERROR the value of the associated types + //~| ERROR equality constraints are not yet supported in `where` clauses +} + +fn dent_object_3<X, COLOR>(c: X) +where X: BoxCar, + X: Vehicle<Color = COLOR>, + X: Box<Color = COLOR> +{} // OK! + +pub fn main() { } |