]> git.lizzy.rs Git - rust.git/blob - src/test/ui/associated-type-bounds/fn-where.rs
Auto merge of #81507 - weiznich:add_diesel_to_cargo_test, r=Mark-Simulacrum
[rust.git] / src / test / ui / associated-type-bounds / fn-where.rs
1 // run-pass
2 // aux-build:fn-aux.rs
3
4 #![allow(unused)]
5 #![feature(associated_type_bounds)]
6
7 extern crate fn_aux;
8
9 use fn_aux::*;
10
11 // ATB, Type parameters, Where-clauses:
12
13 fn where_bound<B>(beta: B) -> usize
14 where
15     B: Beta<Gamma: Alpha>
16 {
17     desugared_bound(beta)
18 }
19
20 fn where_bound_region<B>(beta: B) -> usize
21 where
22     B: Beta<Gamma: 'static>
23 {
24     desugared_bound_region(beta)
25 }
26
27 fn where_bound_multi<B>(beta: B) -> usize
28 where
29     B: Copy + Beta<Gamma: Alpha + 'static + Delta>,
30 {
31     desugared_bound_multi(beta)
32 }
33
34 fn where_bound_region_specific<'a, B>(gamma: &'a B::Gamma) -> usize
35 where
36     B: Beta<Gamma: 'a + Epsilon<'a>>,
37 {
38     desugared_bound_region_specific::<B>(gamma)
39 }
40
41 fn where_bound_region_forall<B>(beta: B) -> usize
42 where
43     B: Beta<Gamma: Copy + for<'a> Epsilon<'a>>,
44 {
45     desugared_bound_region_forall(beta)
46 }
47
48 fn where_bound_region_forall2<B>(beta: B) -> usize
49 where
50     B: Beta<Gamma: Copy + for<'a> Epsilon<'a, Zeta: Eta>>,
51 {
52     desugared_bound_region_forall2(beta)
53 }
54
55 fn where_contraint_region_forall<B>(beta: B) -> usize
56 where
57     for<'a> &'a B: Beta<Gamma: Alpha>,
58 {
59     desugared_contraint_region_forall(beta)
60 }
61
62 fn where_bound_nested<B>(beta: B) -> usize
63 where
64     B: Beta<Gamma: Copy + Alpha + Beta<Gamma: Delta>>,
65 {
66     desugared_bound_nested(beta)
67 }
68
69 fn main() {
70     let beta = BetaType;
71     let gamma = beta.gamma();
72
73     assert_eq!(42, where_bound(beta));
74     assert_eq!(24, where_bound_region(beta));
75     assert_eq!(42 + 24 + 1337, where_bound_multi(beta));
76     assert_eq!(7331, where_bound_region_specific::<BetaType>(&gamma));
77     assert_eq!(7331 * 2, where_bound_region_forall::<BetaType>(beta));
78     assert_eq!(42 + 1337, where_bound_nested::<BetaType>(beta));
79 }