]> git.lizzy.rs Git - rust.git/blob - src/test/ui/associated-types/associated-types-nested-projections.rs
Auto merge of #103600 - compiler-errors:early-binder-nits, r=spastorino
[rust.git] / src / test / ui / associated-types / associated-types-nested-projections.rs
1 // run-pass
2 #![allow(unused_variables)]
3 // Test that we can resolve nested projection types. Issue #20666.
4
5 // pretty-expanded FIXME #23616
6
7 use std::slice;
8
9 trait Bound {}
10
11 impl<'a> Bound for &'a i32 {}
12
13 trait IntoIterator {
14     type Iter: Iterator;
15
16     fn into_iter(self) -> Self::Iter;
17 }
18
19 impl<'a, T> IntoIterator for &'a [T; 3] {
20     type Iter = slice::Iter<'a, T>;
21
22     fn into_iter(self) -> slice::Iter<'a, T> {
23         self.iter()
24     }
25 }
26
27 fn foo<X>(x: X) where
28     X: IntoIterator,
29     <<X as IntoIterator>::Iter as Iterator>::Item: Bound,
30 {
31 }
32
33 fn bar<T, I, X>(x: X) where
34     T: Bound,
35     I: Iterator<Item=T>,
36     X: IntoIterator<Iter=I>,
37 {
38
39 }
40
41 fn main() {
42     foo(&[0, 1, 2]);
43     bar(&[0, 1, 2]);
44 }