]> git.lizzy.rs Git - rust.git/blob - src/test/ui/associated-type/associated-type-projection-ambig-between-bound-and-where-clause.rs
Auto merge of #54720 - davidtwco:issue-51191, r=nikomatsakis
[rust.git] / src / test / ui / associated-type / associated-type-projection-ambig-between-bound-and-where-clause.rs
1 // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 // Test equality constraints in a where clause where the type being
12 // equated appears in a supertrait.
13
14 pub trait Vehicle {
15     type Color;
16
17     fn go(&self) {  }
18 }
19
20 pub trait Box {
21     type Color;
22
23     fn mail(&self) {  }
24 }
25
26 fn a<C:Vehicle+Box>(_: C::Color) {
27     //~^ ERROR ambiguous associated type `Color` in bounds of `C`
28 }
29
30 fn b<C>(_: C::Color) where C : Vehicle+Box {
31     //~^ ERROR ambiguous associated type `Color` in bounds of `C`
32 }
33
34 fn c<C>(_: C::Color) where C : Vehicle, C : Box {
35     //~^ ERROR ambiguous associated type `Color` in bounds of `C`
36 }
37
38 struct D<X>;
39 impl<X> D<X> where X : Vehicle {
40     fn d(&self, _: X::Color) where X : Box { }
41     //~^ ERROR ambiguous associated type `Color` in bounds of `X`
42 }
43
44 trait E<X:Vehicle> {
45     fn e(&self, _: X::Color) where X : Box;
46     //~^ ERROR ambiguous associated type `Color` in bounds of `X`
47
48     fn f(&self, _: X::Color) where X : Box { }
49     //~^ ERROR ambiguous associated type `Color` in bounds of `X`
50 }
51
52 pub fn main() { }