Skip to content

Commit 077d0da

Browse files
committed
add test for issue 127590
1 parent a91f7d7 commit 077d0da

File tree

2 files changed

+87
-0
lines changed

2 files changed

+87
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
fn main() {
2+
let fields = vec![1];
3+
let variant = vec![2];
4+
5+
// should not suggest `*&variant.iter()`
6+
for (src, dest) in std::iter::zip(fields.iter(), &variant.iter()) {
7+
//~^ ERROR `&std::slice::Iter<'_, {integer}>` is not an iterator
8+
//~| ERROR `&std::slice::Iter<'_, {integer}>` is not an iterator
9+
eprintln!("{} {}", src, dest);
10+
}
11+
12+
// don't suggest add `variant.iter().clone().clone()`
13+
for (src, dest) in std::iter::zip(fields.iter(), &variant.iter().clone()) {
14+
//~^ ERROR `&std::slice::Iter<'_, {integer}>` is not an iterator
15+
//~| ERROR `&std::slice::Iter<'_, {integer}>` is not an iterator
16+
eprintln!("{} {}", src, dest);
17+
}
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
error[E0277]: `&std::slice::Iter<'_, {integer}>` is not an iterator
2+
--> $DIR/invalid-suggest-deref-issue-127590.rs:6:54
3+
|
4+
LL | for (src, dest) in std::iter::zip(fields.iter(), &variant.iter()) {
5+
| -------------- ^^^^^^^^^^^^^^^ `&std::slice::Iter<'_, {integer}>` is not an iterator
6+
| |
7+
| required by a bound introduced by this call
8+
|
9+
= help: the trait `Iterator` is not implemented for `&std::slice::Iter<'_, {integer}>`, which is required by `&std::slice::Iter<'_, {integer}>: IntoIterator`
10+
= note: required for `&std::slice::Iter<'_, {integer}>` to implement `IntoIterator`
11+
note: required by a bound in `std::iter::zip`
12+
--> $SRC_DIR/core/src/iter/adapters/zip.rs:LL:COL
13+
help: consider dereferencing here
14+
|
15+
LL | for (src, dest) in std::iter::zip(fields.iter(), *&variant.iter()) {
16+
| +
17+
help: consider removing the leading `&`-reference
18+
|
19+
LL - for (src, dest) in std::iter::zip(fields.iter(), &variant.iter()) {
20+
LL + for (src, dest) in std::iter::zip(fields.iter(), variant.iter()) {
21+
|
22+
23+
error[E0277]: `&std::slice::Iter<'_, {integer}>` is not an iterator
24+
--> $DIR/invalid-suggest-deref-issue-127590.rs:6:24
25+
|
26+
LL | for (src, dest) in std::iter::zip(fields.iter(), &variant.iter()) {
27+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&std::slice::Iter<'_, {integer}>` is not an iterator
28+
|
29+
= help: the trait `Iterator` is not implemented for `&std::slice::Iter<'_, {integer}>`, which is required by `Zip<std::slice::Iter<'_, {integer}>, &std::slice::Iter<'_, {integer}>>: IntoIterator`
30+
= help: the trait `Iterator` is implemented for `std::slice::Iter<'a, T>`
31+
= note: required for `Zip<std::slice::Iter<'_, {integer}>, &std::slice::Iter<'_, {integer}>>` to implement `Iterator`
32+
= note: required for `Zip<std::slice::Iter<'_, {integer}>, &std::slice::Iter<'_, {integer}>>` to implement `IntoIterator`
33+
34+
error[E0277]: `&std::slice::Iter<'_, {integer}>` is not an iterator
35+
--> $DIR/invalid-suggest-deref-issue-127590.rs:13:54
36+
|
37+
LL | for (src, dest) in std::iter::zip(fields.iter(), &variant.iter().clone()) {
38+
| -------------- ^^^^^^^^^^^^^^^^^^^^^^^ `&std::slice::Iter<'_, {integer}>` is not an iterator
39+
| |
40+
| required by a bound introduced by this call
41+
|
42+
= help: the trait `Iterator` is not implemented for `&std::slice::Iter<'_, {integer}>`, which is required by `&std::slice::Iter<'_, {integer}>: IntoIterator`
43+
= note: required for `&std::slice::Iter<'_, {integer}>` to implement `IntoIterator`
44+
note: required by a bound in `std::iter::zip`
45+
--> $SRC_DIR/core/src/iter/adapters/zip.rs:LL:COL
46+
help: consider dereferencing here
47+
|
48+
LL | for (src, dest) in std::iter::zip(fields.iter(), *&variant.iter().clone()) {
49+
| +
50+
help: consider removing the leading `&`-reference
51+
|
52+
LL - for (src, dest) in std::iter::zip(fields.iter(), &variant.iter().clone()) {
53+
LL + for (src, dest) in std::iter::zip(fields.iter(), variant.iter().clone()) {
54+
|
55+
56+
error[E0277]: `&std::slice::Iter<'_, {integer}>` is not an iterator
57+
--> $DIR/invalid-suggest-deref-issue-127590.rs:13:24
58+
|
59+
LL | for (src, dest) in std::iter::zip(fields.iter(), &variant.iter().clone()) {
60+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `&std::slice::Iter<'_, {integer}>` is not an iterator
61+
|
62+
= help: the trait `Iterator` is not implemented for `&std::slice::Iter<'_, {integer}>`, which is required by `Zip<std::slice::Iter<'_, {integer}>, &std::slice::Iter<'_, {integer}>>: IntoIterator`
63+
= help: the trait `Iterator` is implemented for `std::slice::Iter<'a, T>`
64+
= note: required for `Zip<std::slice::Iter<'_, {integer}>, &std::slice::Iter<'_, {integer}>>` to implement `Iterator`
65+
= note: required for `Zip<std::slice::Iter<'_, {integer}>, &std::slice::Iter<'_, {integer}>>` to implement `IntoIterator`
66+
67+
error: aborting due to 4 previous errors
68+
69+
For more information about this error, try `rustc --explain E0277`.

0 commit comments

Comments
 (0)