]> git.proxmox.com Git - rustc.git/blob - src/test/ui/associated-types/associated-types-ref-from-struct.rs
Merge branch 'debian/sid' into debian/experimental
[rustc.git] / src / test / ui / associated-types / associated-types-ref-from-struct.rs
1 // run-pass
2 // Test associated type references in structure fields.
3
4 // pretty-expanded FIXME #23616
5
6 trait Test {
7 type V;
8
9 fn test(&self, value: &Self::V) -> bool;
10 }
11
12 struct TesterPair<T:Test> {
13 tester: T,
14 value: T::V,
15 }
16
17 impl<T:Test> TesterPair<T> {
18 fn new(tester: T, value: T::V) -> TesterPair<T> {
19 TesterPair { tester: tester, value: value }
20 }
21
22 fn test(&self) -> bool {
23 self.tester.test(&self.value)
24 }
25 }
26
27 struct EqU32(u32);
28 impl Test for EqU32 {
29 type V = u32;
30
31 fn test(&self, value: &u32) -> bool {
32 self.0 == *value
33 }
34 }
35
36 struct EqI32(i32);
37 impl Test for EqI32 {
38 type V = i32;
39
40 fn test(&self, value: &i32) -> bool {
41 self.0 == *value
42 }
43 }
44
45 fn main() {
46 let tester = TesterPair::new(EqU32(22), 23);
47 tester.test();
48
49 let tester = TesterPair::new(EqI32(22), 23);
50 tester.test();
51 }