Add tests for handled cases
This commit is contained in:
parent
330b7eda95
commit
2305d02c1a
9
src/test/ui/iterators/array-of-ranges.rs
Normal file
9
src/test/ui/iterators/array-of-ranges.rs
Normal file
@ -0,0 +1,9 @@
|
||||
fn main() {
|
||||
for _ in [0..1] {}
|
||||
let start = 0;
|
||||
let end = 0;
|
||||
for _ in [start..end] {}
|
||||
let array_of_range = [start..end];
|
||||
for _ in array_of_range {}
|
||||
for _ in [0..1, 2..3] {}
|
||||
}
|
43
src/test/ui/iterators/array-of-ranges.stderr
Normal file
43
src/test/ui/iterators/array-of-ranges.stderr
Normal file
@ -0,0 +1,43 @@
|
||||
error[E0277]: `[std::ops::Range<{integer}>; 1]` is not an iterator
|
||||
--> $DIR/array-of-ranges.rs:2:14
|
||||
|
|
||||
LL | for _ in [0..1] {}
|
||||
| ^^^^^^ if you meant to iterate between two values, remove the square brackets
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `[std::ops::Range<{integer}>; 1]`
|
||||
= note: `[start..end]` is an array of one `Range`, you might have meant to have a `Range`: `start..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `[std::ops::Range<{integer}>; 1]` is not an iterator
|
||||
--> $DIR/array-of-ranges.rs:5:14
|
||||
|
|
||||
LL | for _ in [start..end] {}
|
||||
| ^^^^^^^^^^^^ if you meant to iterate between two values, remove the square brackets
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `[std::ops::Range<{integer}>; 1]`
|
||||
= note: `[start..end]` is an array of one `Range`, you might have meant to have a `Range`: `start..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `[std::ops::Range<{integer}>; 1]` is not an iterator
|
||||
--> $DIR/array-of-ranges.rs:7:14
|
||||
|
|
||||
LL | for _ in array_of_range {}
|
||||
| ^^^^^^^^^^^^^^ if you meant to iterate between two values, remove the square brackets
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `[std::ops::Range<{integer}>; 1]`
|
||||
= note: `[start..end]` is an array of one `Range`, you might have meant to have a `Range`: `start..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `[std::ops::Range<{integer}>; 2]` is not an iterator
|
||||
--> $DIR/array-of-ranges.rs:8:14
|
||||
|
|
||||
LL | for _ in [0..1, 2..3] {}
|
||||
| ^^^^^^^^^^^^ borrow the array with `&` or call `.iter()` on it to iterate over it
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `[std::ops::Range<{integer}>; 2]`
|
||||
= note: arrays are not an iterators, but slices like the following are: `&[1, 2, 3]`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
6
src/test/ui/iterators/array.rs
Normal file
6
src/test/ui/iterators/array.rs
Normal file
@ -0,0 +1,6 @@
|
||||
fn main() {
|
||||
for _ in [1, 2] {}
|
||||
let x = [1, 2];
|
||||
for _ in x {}
|
||||
for _ in [1.0, 2.0] {}
|
||||
}
|
33
src/test/ui/iterators/array.stderr
Normal file
33
src/test/ui/iterators/array.stderr
Normal file
@ -0,0 +1,33 @@
|
||||
error[E0277]: `[{integer}; 2]` is not an iterator
|
||||
--> $DIR/array.rs:2:14
|
||||
|
|
||||
LL | for _ in [1, 2] {}
|
||||
| ^^^^^^ borrow the array with `&` or call `.iter()` on it to iterate over it
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `[{integer}; 2]`
|
||||
= note: arrays are not an iterators, but slices like the following are: `&[1, 2, 3]`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `[{integer}; 2]` is not an iterator
|
||||
--> $DIR/array.rs:4:14
|
||||
|
|
||||
LL | for _ in x {}
|
||||
| ^ borrow the array with `&` or call `.iter()` on it to iterate over it
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `[{integer}; 2]`
|
||||
= note: arrays are not an iterators, but slices like the following are: `&[1, 2, 3]`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `[{float}; 2]` is not an iterator
|
||||
--> $DIR/array.rs:5:14
|
||||
|
|
||||
LL | for _ in [1.0, 2.0] {}
|
||||
| ^^^^^^^^^^ borrow the array with `&` or call `.iter()` on it to iterate over it
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `[{float}; 2]`
|
||||
= note: arrays are not an iterators, but slices like the following are: `&[1, 2, 3]`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
3
src/test/ui/iterators/bound.rs
Normal file
3
src/test/ui/iterators/bound.rs
Normal file
@ -0,0 +1,3 @@
|
||||
struct S<I: Iterator>(I);
|
||||
struct T(S<u8>);
|
||||
fn main() {}
|
17
src/test/ui/iterators/bound.stderr
Normal file
17
src/test/ui/iterators/bound.stderr
Normal file
@ -0,0 +1,17 @@
|
||||
error[E0277]: `u8` is not an iterator
|
||||
--> $DIR/bound.rs:2:10
|
||||
|
|
||||
LL | struct T(S<u8>);
|
||||
| ^^^^^ `u8` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `u8`
|
||||
= note: if you want to iterate between `0` until a value `end`, use the range syntax: `0..end`
|
||||
note: required by `S`
|
||||
--> $DIR/bound.rs:1:1
|
||||
|
|
||||
LL | struct S<I: Iterator>(I);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
26
src/test/ui/iterators/integral.rs
Normal file
26
src/test/ui/iterators/integral.rs
Normal file
@ -0,0 +1,26 @@
|
||||
fn main() {
|
||||
for _ in 42 {}
|
||||
//~^ ERROR `{integer}` is not an iterator
|
||||
for _ in 42 as u8 {}
|
||||
//~^ ERROR `u8` is not an iterator
|
||||
for _ in 42 as i8 {}
|
||||
//~^ ERROR `i8` is not an iterator
|
||||
for _ in 42 as u16 {}
|
||||
//~^ ERROR `u16` is not an iterator
|
||||
for _ in 42 as i16 {}
|
||||
//~^ ERROR `i16` is not an iterator
|
||||
for _ in 42 as u32 {}
|
||||
//~^ ERROR `u32` is not an iterator
|
||||
for _ in 42 as i32 {}
|
||||
//~^ ERROR `i32` is not an iterator
|
||||
for _ in 42 as u64 {}
|
||||
//~^ ERROR `u64` is not an iterator
|
||||
for _ in 42 as i64 {}
|
||||
//~^ ERROR `i64` is not an iterator
|
||||
for _ in 42 as usize {}
|
||||
//~^ ERROR `usize` is not an iterator
|
||||
for _ in 42 as isize {}
|
||||
//~^ ERROR `isize` is not an iterator
|
||||
for _ in 42.0 {}
|
||||
//~^ ERROR `{float}` is not an iterator
|
||||
}
|
122
src/test/ui/iterators/integral.stderr
Normal file
122
src/test/ui/iterators/integral.stderr
Normal file
@ -0,0 +1,122 @@
|
||||
error[E0277]: `{integer}` is not an iterator
|
||||
--> $DIR/integral.rs:2:14
|
||||
|
|
||||
LL | for _ in 42 {}
|
||||
| ^^ `{integer}` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `{integer}`
|
||||
= note: if you want to iterate between `0` until a value `end`, use the range syntax: `0..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `u8` is not an iterator
|
||||
--> $DIR/integral.rs:4:14
|
||||
|
|
||||
LL | for _ in 42 as u8 {}
|
||||
| ^^^^^^^^ `u8` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `u8`
|
||||
= note: if you want to iterate between `0` until a value `end`, use the range syntax: `0..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `i8` is not an iterator
|
||||
--> $DIR/integral.rs:6:14
|
||||
|
|
||||
LL | for _ in 42 as i8 {}
|
||||
| ^^^^^^^^ `i8` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `i8`
|
||||
= note: if you want to iterate between `0` until a value `end`, use the range syntax: `0..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `u16` is not an iterator
|
||||
--> $DIR/integral.rs:8:14
|
||||
|
|
||||
LL | for _ in 42 as u16 {}
|
||||
| ^^^^^^^^^ `u16` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `u16`
|
||||
= note: if you want to iterate between `0` until a value `end`, use the range syntax: `0..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `i16` is not an iterator
|
||||
--> $DIR/integral.rs:10:14
|
||||
|
|
||||
LL | for _ in 42 as i16 {}
|
||||
| ^^^^^^^^^ `i16` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `i16`
|
||||
= note: if you want to iterate between `0` until a value `end`, use the range syntax: `0..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `u32` is not an iterator
|
||||
--> $DIR/integral.rs:12:14
|
||||
|
|
||||
LL | for _ in 42 as u32 {}
|
||||
| ^^^^^^^^^ `u32` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `u32`
|
||||
= note: if you want to iterate between `0` until a value `end`, use the range syntax: `0..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `i32` is not an iterator
|
||||
--> $DIR/integral.rs:14:14
|
||||
|
|
||||
LL | for _ in 42 as i32 {}
|
||||
| ^^^^^^^^^ `i32` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `i32`
|
||||
= note: if you want to iterate between `0` until a value `end`, use the range syntax: `0..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `u64` is not an iterator
|
||||
--> $DIR/integral.rs:16:14
|
||||
|
|
||||
LL | for _ in 42 as u64 {}
|
||||
| ^^^^^^^^^ `u64` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `u64`
|
||||
= note: if you want to iterate between `0` until a value `end`, use the range syntax: `0..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `i64` is not an iterator
|
||||
--> $DIR/integral.rs:18:14
|
||||
|
|
||||
LL | for _ in 42 as i64 {}
|
||||
| ^^^^^^^^^ `i64` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `i64`
|
||||
= note: if you want to iterate between `0` until a value `end`, use the range syntax: `0..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `usize` is not an iterator
|
||||
--> $DIR/integral.rs:20:14
|
||||
|
|
||||
LL | for _ in 42 as usize {}
|
||||
| ^^^^^^^^^^^ `usize` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `usize`
|
||||
= note: if you want to iterate between `0` until a value `end`, use the range syntax: `0..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `isize` is not an iterator
|
||||
--> $DIR/integral.rs:22:14
|
||||
|
|
||||
LL | for _ in 42 as isize {}
|
||||
| ^^^^^^^^^^^ `isize` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `isize`
|
||||
= note: if you want to iterate between `0` until a value `end`, use the range syntax: `0..end`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `{float}` is not an iterator
|
||||
--> $DIR/integral.rs:24:14
|
||||
|
|
||||
LL | for _ in 42.0 {}
|
||||
| ^^^^ `{float}` is not an iterator
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `{float}`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error: aborting due to 12 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
6
src/test/ui/iterators/string.rs
Normal file
6
src/test/ui/iterators/string.rs
Normal file
@ -0,0 +1,6 @@
|
||||
fn main() {
|
||||
for _ in "".to_owned() {}
|
||||
//~^ ERROR `std::string::String` is not an iterator
|
||||
for _ in "" {}
|
||||
//~^ ERROR `&str` is not an iterator
|
||||
}
|
21
src/test/ui/iterators/string.stderr
Normal file
21
src/test/ui/iterators/string.stderr
Normal file
@ -0,0 +1,21 @@
|
||||
error[E0277]: `std::string::String` is not an iterator
|
||||
--> $DIR/string.rs:2:14
|
||||
|
|
||||
LL | for _ in "".to_owned() {}
|
||||
| ^^^^^^^^^^^^^ `std::string::String` is not an iterator; try calling `.chars()` or `.bytes()`
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `std::string::String`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error[E0277]: `&str` is not an iterator
|
||||
--> $DIR/string.rs:4:14
|
||||
|
|
||||
LL | for _ in "" {}
|
||||
| ^^ `&str` is not an iterator; try calling `.chars()` or `.bytes()`
|
||||
|
|
||||
= help: the trait `std::iter::Iterator` is not implemented for `&str`
|
||||
= note: required by `std::iter::IntoIterator::into_iter`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
Loading…
x
Reference in New Issue
Block a user