File tree Expand file tree Collapse file tree 2 files changed +51
-0
lines changed
src/test/ui/existential_types Expand file tree Collapse file tree 2 files changed +51
-0
lines changed Original file line number Diff line number Diff line change 1+ #![ feature( existential_type) ]
2+
3+ trait IterBits {
4+ type BitsIter : Iterator < Item = u8 > ;
5+ fn iter_bits ( self , n : u8 ) -> Self :: BitsIter ;
6+ }
7+
8+ existential type IterBitsIter < T , E , I > : std:: iter:: Iterator < Item = I > ;
9+ //~^ ERROR could not find defining uses
10+
11+ impl < T , E > IterBits for T
12+ where
13+ T : std:: ops:: Shr < Output = T >
14+ + std:: ops:: BitAnd < T , Output = T >
15+ + std:: convert:: From < u8 >
16+ + std:: convert:: TryInto < u8 , Error = E > ,
17+ E : std:: fmt:: Debug ,
18+ {
19+ type BitsIter = IterBitsIter < T , E , u8 > ;
20+ fn iter_bits ( self , n : u8 ) -> Self :: BitsIter {
21+ //~^ ERROR type parameter `E` is part of concrete type but not used
22+ ( 0u8 ..n)
23+ . rev ( )
24+ . map ( move |shift| ( ( self >> T :: from ( shift) ) & T :: from ( 1 ) ) . try_into ( ) . unwrap ( ) )
25+ }
26+ }
Original file line number Diff line number Diff line change 1+ error[E0601]: `main` function not found in crate `issue_60564`
2+ |
3+ = note: consider adding a `main` function to `$DIR/issue-60564.rs`
4+
5+ error: type parameter `E` is part of concrete type but not used in parameter list for existential type
6+ --> $DIR/issue-60564.rs:20:49
7+ |
8+ LL | fn iter_bits(self, n: u8) -> Self::BitsIter {
9+ | _________________________________________________^
10+ LL | |
11+ LL | | (0u8..n)
12+ LL | | .rev()
13+ LL | | .map(move |shift| ((self >> T::from(shift)) & T::from(1)).try_into().unwrap())
14+ LL | | }
15+ | |_____^
16+
17+ error: could not find defining uses
18+ --> $DIR/issue-60564.rs:8:1
19+ |
20+ LL | existential type IterBitsIter<T, E, I>: std::iter::Iterator<Item = I>;
21+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
22+
23+ error: aborting due to 3 previous errors
24+
25+ For more information about this error, try `rustc --explain E0601`.
You can’t perform that action at this time.
0 commit comments