diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:03 +0000 |
commit | 64d98f8ee037282c35007b64c2649055c56af1db (patch) | |
tree | 5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /tests/ui/iterators | |
parent | Adding debian version 1.67.1+dfsg1-1. (diff) | |
download | rustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip |
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | tests/ui/iterators/array-of-ranges.rs (renamed from src/test/ui/iterators/array-of-ranges.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/array.rs (renamed from src/test/ui/iterators/array.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/bound.rs (renamed from src/test/ui/iterators/bound.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/bound.stderr (renamed from src/test/ui/iterators/bound.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/collect-into-array.rs (renamed from src/test/ui/iterators/collect-into-array.rs) | 1 | ||||
-rw-r--r-- | tests/ui/iterators/collect-into-array.stderr | 13 | ||||
-rw-r--r-- | tests/ui/iterators/collect-into-slice.rs (renamed from src/test/ui/iterators/collect-into-slice.rs) | 1 | ||||
-rw-r--r-- | tests/ui/iterators/collect-into-slice.stderr | 33 | ||||
-rw-r--r-- | tests/ui/iterators/float_iterator_hint.rs | 15 | ||||
-rw-r--r-- | tests/ui/iterators/float_iterator_hint.stderr | 13 | ||||
-rw-r--r-- | tests/ui/iterators/integral.rs (renamed from src/test/ui/iterators/integral.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/integral.stderr (renamed from src/test/ui/iterators/integral.stderr) | 1 | ||||
-rw-r--r-- | tests/ui/iterators/into-iter-on-arrays-2018.rs (renamed from src/test/ui/iterators/into-iter-on-arrays-2018.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/into-iter-on-arrays-2018.stderr (renamed from src/test/ui/iterators/into-iter-on-arrays-2018.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/into-iter-on-arrays-2021.rs (renamed from src/test/ui/iterators/into-iter-on-arrays-2021.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/into-iter-on-arrays-lint.fixed (renamed from src/test/ui/iterators/into-iter-on-arrays-lint.fixed) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/into-iter-on-arrays-lint.rs (renamed from src/test/ui/iterators/into-iter-on-arrays-lint.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/into-iter-on-arrays-lint.stderr (renamed from src/test/ui/iterators/into-iter-on-arrays-lint.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/into-iterator-type-inference-shift.rs (renamed from src/test/ui/iterators/into-iterator-type-inference-shift.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/invalid-iterator-chain-with-int-infer.rs | 4 | ||||
-rw-r--r-- | tests/ui/iterators/invalid-iterator-chain-with-int-infer.stderr | 24 | ||||
-rw-r--r-- | tests/ui/iterators/invalid-iterator-chain.rs | 53 | ||||
-rw-r--r-- | tests/ui/iterators/invalid-iterator-chain.stderr | 176 | ||||
-rw-r--r-- | tests/ui/iterators/issue-28098.rs (renamed from src/test/ui/iterators/issue-28098.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/issue-28098.stderr (renamed from src/test/ui/iterators/issue-28098.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/issue-58952-filter-type-length.rs (renamed from src/test/ui/iterators/issue-58952-filter-type-length.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/iter-cloned-type-inference.rs (renamed from src/test/ui/iterators/iter-cloned-type-inference.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/iter-count-overflow-debug.rs (renamed from src/test/ui/iterators/iter-count-overflow-debug.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/iter-count-overflow-ndebug.rs (renamed from src/test/ui/iterators/iter-count-overflow-ndebug.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/iter-map-fold-type-length.rs (renamed from src/test/ui/iterators/iter-map-fold-type-length.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/iter-position-overflow-debug.rs (renamed from src/test/ui/iterators/iter-position-overflow-debug.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/iter-position-overflow-ndebug.rs (renamed from src/test/ui/iterators/iter-position-overflow-ndebug.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/iter-range.rs (renamed from src/test/ui/iterators/iter-range.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/iter-step-overflow-debug.rs (renamed from src/test/ui/iterators/iter-step-overflow-debug.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/iter-step-overflow-ndebug.rs (renamed from src/test/ui/iterators/iter-step-overflow-ndebug.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/iter-sum-overflow-debug.rs (renamed from src/test/ui/iterators/iter-sum-overflow-debug.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/iter-sum-overflow-ndebug.rs (renamed from src/test/ui/iterators/iter-sum-overflow-ndebug.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/iter-sum-overflow-overflow-checks.rs (renamed from src/test/ui/iterators/iter-sum-overflow-overflow-checks.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/ranges.rs (renamed from src/test/ui/iterators/ranges.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/ranges.stderr (renamed from src/test/ui/iterators/ranges.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/rsplit-clone.rs (renamed from src/test/ui/iterators/rsplit-clone.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/skip-count-overflow.rs (renamed from src/test/ui/iterators/skip-count-overflow.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/string.rs (renamed from src/test/ui/iterators/string.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/string.stderr (renamed from src/test/ui/iterators/string.stderr) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/vec-on-unimplemented.rs (renamed from src/test/ui/iterators/vec-on-unimplemented.rs) | 0 | ||||
-rw-r--r-- | tests/ui/iterators/vec-on-unimplemented.stderr | 18 |
46 files changed, 350 insertions, 2 deletions
diff --git a/src/test/ui/iterators/array-of-ranges.rs b/tests/ui/iterators/array-of-ranges.rs index 037540a3e..037540a3e 100644 --- a/src/test/ui/iterators/array-of-ranges.rs +++ b/tests/ui/iterators/array-of-ranges.rs diff --git a/src/test/ui/iterators/array.rs b/tests/ui/iterators/array.rs index 5985c74e1..5985c74e1 100644 --- a/src/test/ui/iterators/array.rs +++ b/tests/ui/iterators/array.rs diff --git a/src/test/ui/iterators/bound.rs b/tests/ui/iterators/bound.rs index bdd99ef8d..bdd99ef8d 100644 --- a/src/test/ui/iterators/bound.rs +++ b/tests/ui/iterators/bound.rs diff --git a/src/test/ui/iterators/bound.stderr b/tests/ui/iterators/bound.stderr index cc7ded498..cc7ded498 100644 --- a/src/test/ui/iterators/bound.stderr +++ b/tests/ui/iterators/bound.stderr diff --git a/src/test/ui/iterators/collect-into-array.rs b/tests/ui/iterators/collect-into-array.rs index 4c424999b..99d0d9bd7 100644 --- a/src/test/ui/iterators/collect-into-array.rs +++ b/tests/ui/iterators/collect-into-array.rs @@ -3,5 +3,4 @@ fn main() { //~^ ERROR an array of type `[u32; 10]` cannot be built directly from an iterator //~| NOTE try collecting into a `Vec<{integer}>`, then using `.try_into()` //~| NOTE required by a bound in `collect` - //~| NOTE required by a bound introduced by this call } diff --git a/tests/ui/iterators/collect-into-array.stderr b/tests/ui/iterators/collect-into-array.stderr new file mode 100644 index 000000000..e38745cc1 --- /dev/null +++ b/tests/ui/iterators/collect-into-array.stderr @@ -0,0 +1,13 @@ +error[E0277]: an array of type `[u32; 10]` cannot be built directly from an iterator + --> $DIR/collect-into-array.rs:2:39 + | +LL | let whatever: [u32; 10] = (0..10).collect(); + | ^^^^^^^ try collecting into a `Vec<{integer}>`, then using `.try_into()` + | + = help: the trait `FromIterator<{integer}>` is not implemented for `[u32; 10]` +note: required by a bound in `collect` + --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/iterators/collect-into-slice.rs b/tests/ui/iterators/collect-into-slice.rs index 09832c260..5a8aacb1a 100644 --- a/src/test/ui/iterators/collect-into-slice.rs +++ b/tests/ui/iterators/collect-into-slice.rs @@ -13,6 +13,5 @@ fn main() { //~| NOTE all local variables must have a statically known size //~| NOTE doesn't have a size known at compile-time //~| NOTE doesn't have a size known at compile-time - //~| NOTE required by a bound introduced by this call process_slice(&some_generated_vec); } diff --git a/tests/ui/iterators/collect-into-slice.stderr b/tests/ui/iterators/collect-into-slice.stderr new file mode 100644 index 000000000..29fff8c51 --- /dev/null +++ b/tests/ui/iterators/collect-into-slice.stderr @@ -0,0 +1,33 @@ +error[E0277]: the size for values of type `[i32]` cannot be known at compilation time + --> $DIR/collect-into-slice.rs:6:9 + | +LL | let some_generated_vec = (0..10).collect(); + | ^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time + | + = help: the trait `Sized` is not implemented for `[i32]` + = note: all local variables must have a statically known size + = help: unsized locals are gated as an unstable feature + +error[E0277]: the size for values of type `[i32]` cannot be known at compilation time + --> $DIR/collect-into-slice.rs:6:38 + | +LL | let some_generated_vec = (0..10).collect(); + | ^^^^^^^ doesn't have a size known at compile-time + | + = help: the trait `Sized` is not implemented for `[i32]` +note: required by a bound in `collect` + --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL + +error[E0277]: a slice of type `[i32]` cannot be built since `[i32]` has no definite size + --> $DIR/collect-into-slice.rs:6:38 + | +LL | let some_generated_vec = (0..10).collect(); + | ^^^^^^^ try explicitly collecting into a `Vec<{integer}>` + | + = help: the trait `FromIterator<{integer}>` is not implemented for `[i32]` +note: required by a bound in `collect` + --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL + +error: aborting due to 3 previous errors + +For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/iterators/float_iterator_hint.rs b/tests/ui/iterators/float_iterator_hint.rs new file mode 100644 index 000000000..a3335ca41 --- /dev/null +++ b/tests/ui/iterators/float_iterator_hint.rs @@ -0,0 +1,15 @@ +// #106728 + +fn main() { + for i in 0.2 { + //~^ ERROR `{float}` is not an iterator + //~| `{float}` is not an iterator + //~| NOTE in this expansion of desugaring of `for` loop + //~| NOTE in this expansion of desugaring of `for` loop + //~| NOTE in this expansion of desugaring of `for` loop + //~| NOTE in this expansion of desugaring of `for` loop + //~| NOTE if you want to iterate between `start` until a value `end`, use the exclusive range syntax `start..end` or the inclusive range syntax `start..=end` + //~| NOTE required for `{float}` to implement `IntoIterator` + println!(); + } +} diff --git a/tests/ui/iterators/float_iterator_hint.stderr b/tests/ui/iterators/float_iterator_hint.stderr new file mode 100644 index 000000000..bae23a1f8 --- /dev/null +++ b/tests/ui/iterators/float_iterator_hint.stderr @@ -0,0 +1,13 @@ +error[E0277]: `{float}` is not an iterator + --> $DIR/float_iterator_hint.rs:4:14 + | +LL | for i in 0.2 { + | ^^^ `{float}` is not an iterator + | + = help: the trait `Iterator` is not implemented for `{float}` + = note: if you want to iterate between `start` until a value `end`, use the exclusive range syntax `start..end` or the inclusive range syntax `start..=end` + = note: required for `{float}` to implement `IntoIterator` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/iterators/integral.rs b/tests/ui/iterators/integral.rs index 7537c7904..7537c7904 100644 --- a/src/test/ui/iterators/integral.rs +++ b/tests/ui/iterators/integral.rs diff --git a/src/test/ui/iterators/integral.stderr b/tests/ui/iterators/integral.stderr index 047a71f98..c142fec8d 100644 --- a/src/test/ui/iterators/integral.stderr +++ b/tests/ui/iterators/integral.stderr @@ -115,6 +115,7 @@ LL | for _ in 42.0 {} | ^^^^ `{float}` is not an iterator | = help: the trait `Iterator` is not implemented for `{float}` + = note: if you want to iterate between `start` until a value `end`, use the exclusive range syntax `start..end` or the inclusive range syntax `start..=end` = note: required for `{float}` to implement `IntoIterator` error: aborting due to 12 previous errors diff --git a/src/test/ui/iterators/into-iter-on-arrays-2018.rs b/tests/ui/iterators/into-iter-on-arrays-2018.rs index 60995170a..60995170a 100644 --- a/src/test/ui/iterators/into-iter-on-arrays-2018.rs +++ b/tests/ui/iterators/into-iter-on-arrays-2018.rs diff --git a/src/test/ui/iterators/into-iter-on-arrays-2018.stderr b/tests/ui/iterators/into-iter-on-arrays-2018.stderr index 2378476e5..2378476e5 100644 --- a/src/test/ui/iterators/into-iter-on-arrays-2018.stderr +++ b/tests/ui/iterators/into-iter-on-arrays-2018.stderr diff --git a/src/test/ui/iterators/into-iter-on-arrays-2021.rs b/tests/ui/iterators/into-iter-on-arrays-2021.rs index 158317efe..158317efe 100644 --- a/src/test/ui/iterators/into-iter-on-arrays-2021.rs +++ b/tests/ui/iterators/into-iter-on-arrays-2021.rs diff --git a/src/test/ui/iterators/into-iter-on-arrays-lint.fixed b/tests/ui/iterators/into-iter-on-arrays-lint.fixed index 6e02a7024..6e02a7024 100644 --- a/src/test/ui/iterators/into-iter-on-arrays-lint.fixed +++ b/tests/ui/iterators/into-iter-on-arrays-lint.fixed diff --git a/src/test/ui/iterators/into-iter-on-arrays-lint.rs b/tests/ui/iterators/into-iter-on-arrays-lint.rs index 582d5cadd..582d5cadd 100644 --- a/src/test/ui/iterators/into-iter-on-arrays-lint.rs +++ b/tests/ui/iterators/into-iter-on-arrays-lint.rs diff --git a/src/test/ui/iterators/into-iter-on-arrays-lint.stderr b/tests/ui/iterators/into-iter-on-arrays-lint.stderr index 2fde276fa..2fde276fa 100644 --- a/src/test/ui/iterators/into-iter-on-arrays-lint.stderr +++ b/tests/ui/iterators/into-iter-on-arrays-lint.stderr diff --git a/src/test/ui/iterators/into-iterator-type-inference-shift.rs b/tests/ui/iterators/into-iterator-type-inference-shift.rs index 9151172fd..9151172fd 100644 --- a/src/test/ui/iterators/into-iterator-type-inference-shift.rs +++ b/tests/ui/iterators/into-iterator-type-inference-shift.rs diff --git a/tests/ui/iterators/invalid-iterator-chain-with-int-infer.rs b/tests/ui/iterators/invalid-iterator-chain-with-int-infer.rs new file mode 100644 index 000000000..882a1d139 --- /dev/null +++ b/tests/ui/iterators/invalid-iterator-chain-with-int-infer.rs @@ -0,0 +1,4 @@ +fn main() { + let x = Some(()).iter().map(|()| 1).sum::<f32>(); + //~^ ERROR a value of type `f32` cannot be made by summing an iterator over elements of type `{integer}` +} diff --git a/tests/ui/iterators/invalid-iterator-chain-with-int-infer.stderr b/tests/ui/iterators/invalid-iterator-chain-with-int-infer.stderr new file mode 100644 index 000000000..3cb5e44c7 --- /dev/null +++ b/tests/ui/iterators/invalid-iterator-chain-with-int-infer.stderr @@ -0,0 +1,24 @@ +error[E0277]: a value of type `f32` cannot be made by summing an iterator over elements of type `{integer}` + --> $DIR/invalid-iterator-chain-with-int-infer.rs:2:41 + | +LL | let x = Some(()).iter().map(|()| 1).sum::<f32>(); + | ^^^ value of type `f32` cannot be made by summing a `std::iter::Iterator<Item={integer}>` + | + = help: the trait `Sum<{integer}>` is not implemented for `f32` + = help: the following other types implement trait `Sum<A>`: + <f32 as Sum<&'a f32>> + <f32 as Sum> +note: the method call chain might not have had the expected associated types + --> $DIR/invalid-iterator-chain-with-int-infer.rs:2:29 + | +LL | let x = Some(()).iter().map(|()| 1).sum::<f32>(); + | -------- ------ ^^^^^^^^^^^ `Iterator::Item` changed to `{integer}` here + | | | + | | `Iterator::Item` is `&()` here + | this expression has type `Option<()>` +note: required by a bound in `std::iter::Iterator::sum` + --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/iterators/invalid-iterator-chain.rs b/tests/ui/iterators/invalid-iterator-chain.rs new file mode 100644 index 000000000..ebdf33303 --- /dev/null +++ b/tests/ui/iterators/invalid-iterator-chain.rs @@ -0,0 +1,53 @@ +use std::collections::hash_set::Iter; +use std::collections::HashSet; + +fn iter_to_vec<'b, X>(i: Iter<'b, X>) -> Vec<X> { + let i = i.map(|x| x.clone()); + i.collect() //~ ERROR E0277 +} + +fn main() { + let scores = vec![(0, 0)] + .iter() + .map(|(a, b)| { + a + b; + }); + println!("{}", scores.sum::<i32>()); //~ ERROR E0277 + println!( + "{}", + vec![0, 1] + .iter() + .map(|x| x * 2) + .map(|x| x as f64) + .map(|x| x as i64) + .filter(|x| *x > 0) + .map(|x| { x + 1 }) + .map(|x| { x; }) + .sum::<i32>(), //~ ERROR E0277 + ); + println!( + "{}", + vec![0, 1] + .iter() + .map(|x| x * 2) + .map(|x| x as f64) + .filter(|x| *x > 0.0) + .map(|x| { x + 1.0 }) + .sum::<i32>(), //~ ERROR E0277 + ); + println!("{}", vec![0, 1].iter().map(|x| { x; }).sum::<i32>()); //~ ERROR E0277 + println!("{}", vec![(), ()].iter().sum::<i32>()); //~ ERROR E0277 + let a = vec![0]; + let b = a.into_iter(); + let c = b.map(|x| x + 1); + let d = c.filter(|x| *x > 10 ); + let e = d.map(|x| { + x + 1; + }); + let f = e.filter(|_| false); + let g: Vec<i32> = f.collect(); //~ ERROR E0277 + + let mut s = HashSet::new(); + s.insert(1u8); + println!("{:?}", iter_to_vec(s.iter())); +} diff --git a/tests/ui/iterators/invalid-iterator-chain.stderr b/tests/ui/iterators/invalid-iterator-chain.stderr new file mode 100644 index 000000000..f3dceca7e --- /dev/null +++ b/tests/ui/iterators/invalid-iterator-chain.stderr @@ -0,0 +1,176 @@ +error[E0277]: a value of type `Vec<X>` cannot be built from an iterator over elements of type `&X` + --> $DIR/invalid-iterator-chain.rs:6:7 + | +LL | i.collect() + | ^^^^^^^ value of type `Vec<X>` cannot be built from `std::iter::Iterator<Item=&X>` + | + = help: the trait `FromIterator<&X>` is not implemented for `Vec<X>` + = help: the trait `FromIterator<T>` is implemented for `Vec<T>` +note: the method call chain might not have had the expected associated types + --> $DIR/invalid-iterator-chain.rs:4:26 + | +LL | fn iter_to_vec<'b, X>(i: Iter<'b, X>) -> Vec<X> { + | ^^^^^^^^^^^ `Iterator::Item` is `&X` here +LL | let i = i.map(|x| x.clone()); + | ------------------ `Iterator::Item` remains `&X` here +note: required by a bound in `collect` + --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL + +error[E0277]: a value of type `i32` cannot be made by summing an iterator over elements of type `()` + --> $DIR/invalid-iterator-chain.rs:15:27 + | +LL | println!("{}", scores.sum::<i32>()); + | ^^^ value of type `i32` cannot be made by summing a `std::iter::Iterator<Item=()>` + | + = help: the trait `Sum<()>` is not implemented for `i32` + = help: the following other types implement trait `Sum<A>`: + <i32 as Sum<&'a i32>> + <i32 as Sum> +note: the method call chain might not have had the expected associated types + --> $DIR/invalid-iterator-chain.rs:12:10 + | +LL | let scores = vec![(0, 0)] + | ------------ this expression has type `Vec<({integer}, {integer})>` +LL | .iter() + | ------ `Iterator::Item` is `&({integer}, {integer})` here +LL | .map(|(a, b)| { + | __________^ +LL | | a + b; +LL | | }); + | |__________^ `Iterator::Item` changed to `()` here +note: required by a bound in `std::iter::Iterator::sum` + --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL + +error[E0277]: a value of type `i32` cannot be made by summing an iterator over elements of type `()` + --> $DIR/invalid-iterator-chain.rs:26:14 + | +LL | .sum::<i32>(), + | ^^^ value of type `i32` cannot be made by summing a `std::iter::Iterator<Item=()>` + | + = help: the trait `Sum<()>` is not implemented for `i32` + = help: the following other types implement trait `Sum<A>`: + <i32 as Sum<&'a i32>> + <i32 as Sum> +note: the method call chain might not have had the expected associated types + --> $DIR/invalid-iterator-chain.rs:25:14 + | +LL | vec![0, 1] + | ---------- this expression has type `Vec<{integer}>` +LL | .iter() + | ------ `Iterator::Item` is `&{integer}` here +LL | .map(|x| x * 2) + | -------------- `Iterator::Item` changed to `{integer}` here +LL | .map(|x| x as f64) + | ----------------- `Iterator::Item` changed to `f64` here +LL | .map(|x| x as i64) + | ----------------- `Iterator::Item` changed to `i64` here +LL | .filter(|x| *x > 0) + | ------------------ `Iterator::Item` remains `i64` here +LL | .map(|x| { x + 1 }) + | ------------------ `Iterator::Item` remains `i64` here +LL | .map(|x| { x; }) + | ^^^^^^^^^^^^^^^ `Iterator::Item` changed to `()` here +note: required by a bound in `std::iter::Iterator::sum` + --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL + +error[E0277]: a value of type `i32` cannot be made by summing an iterator over elements of type `f64` + --> $DIR/invalid-iterator-chain.rs:36:14 + | +LL | .sum::<i32>(), + | ^^^ value of type `i32` cannot be made by summing a `std::iter::Iterator<Item=f64>` + | + = help: the trait `Sum<f64>` is not implemented for `i32` + = help: the following other types implement trait `Sum<A>`: + <i32 as Sum<&'a i32>> + <i32 as Sum> +note: the method call chain might not have had the expected associated types + --> $DIR/invalid-iterator-chain.rs:33:14 + | +LL | vec![0, 1] + | ---------- this expression has type `Vec<{integer}>` +LL | .iter() + | ------ `Iterator::Item` is `&{integer}` here +LL | .map(|x| x * 2) + | -------------- `Iterator::Item` changed to `{integer}` here +LL | .map(|x| x as f64) + | ^^^^^^^^^^^^^^^^^ `Iterator::Item` changed to `f64` here +LL | .filter(|x| *x > 0.0) + | -------------------- `Iterator::Item` remains `f64` here +LL | .map(|x| { x + 1.0 }) + | -------------------- `Iterator::Item` remains `f64` here +note: required by a bound in `std::iter::Iterator::sum` + --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL + +error[E0277]: a value of type `i32` cannot be made by summing an iterator over elements of type `()` + --> $DIR/invalid-iterator-chain.rs:38:54 + | +LL | println!("{}", vec![0, 1].iter().map(|x| { x; }).sum::<i32>()); + | ^^^ value of type `i32` cannot be made by summing a `std::iter::Iterator<Item=()>` + | + = help: the trait `Sum<()>` is not implemented for `i32` + = help: the following other types implement trait `Sum<A>`: + <i32 as Sum<&'a i32>> + <i32 as Sum> +note: the method call chain might not have had the expected associated types + --> $DIR/invalid-iterator-chain.rs:38:38 + | +LL | println!("{}", vec![0, 1].iter().map(|x| { x; }).sum::<i32>()); + | ---------- ------ ^^^^^^^^^^^^^^^ `Iterator::Item` changed to `()` here + | | | + | | `Iterator::Item` is `&{integer}` here + | this expression has type `Vec<{integer}>` +note: required by a bound in `std::iter::Iterator::sum` + --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL + +error[E0277]: a value of type `i32` cannot be made by summing an iterator over elements of type `&()` + --> $DIR/invalid-iterator-chain.rs:39:40 + | +LL | println!("{}", vec![(), ()].iter().sum::<i32>()); + | ^^^ value of type `i32` cannot be made by summing a `std::iter::Iterator<Item=&()>` + | + = help: the trait `Sum<&()>` is not implemented for `i32` + = help: the following other types implement trait `Sum<A>`: + <i32 as Sum<&'a i32>> + <i32 as Sum> +note: the method call chain might not have had the expected associated types + --> $DIR/invalid-iterator-chain.rs:39:33 + | +LL | println!("{}", vec![(), ()].iter().sum::<i32>()); + | ------------ ^^^^^^ `Iterator::Item` is `&()` here + | | + | this expression has type `Vec<()>` +note: required by a bound in `std::iter::Iterator::sum` + --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL + +error[E0277]: a value of type `Vec<i32>` cannot be built from an iterator over elements of type `()` + --> $DIR/invalid-iterator-chain.rs:48:25 + | +LL | let g: Vec<i32> = f.collect(); + | ^^^^^^^ value of type `Vec<i32>` cannot be built from `std::iter::Iterator<Item=()>` + | + = help: the trait `FromIterator<()>` is not implemented for `Vec<i32>` + = help: the trait `FromIterator<T>` is implemented for `Vec<T>` +note: the method call chain might not have had the expected associated types + --> $DIR/invalid-iterator-chain.rs:44:15 + | +LL | let a = vec![0]; + | ------- this expression has type `Vec<{integer}>` +LL | let b = a.into_iter(); + | ----------- `Iterator::Item` is `{integer}` here +LL | let c = b.map(|x| x + 1); + | -------------- `Iterator::Item` remains `{integer}` here +LL | let d = c.filter(|x| *x > 10 ); + | -------------------- `Iterator::Item` remains `{integer}` here +LL | let e = d.map(|x| { + | _______________^ +LL | | x + 1; +LL | | }); + | |______^ `Iterator::Item` changed to `()` here +LL | let f = e.filter(|_| false); + | ----------------- `Iterator::Item` remains `()` here +note: required by a bound in `collect` + --> $SRC_DIR/core/src/iter/traits/iterator.rs:LL:COL + +error: aborting due to 7 previous errors + +For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/iterators/issue-28098.rs b/tests/ui/iterators/issue-28098.rs index 80c77edae..80c77edae 100644 --- a/src/test/ui/iterators/issue-28098.rs +++ b/tests/ui/iterators/issue-28098.rs diff --git a/src/test/ui/iterators/issue-28098.stderr b/tests/ui/iterators/issue-28098.stderr index 3256e57d4..3256e57d4 100644 --- a/src/test/ui/iterators/issue-28098.stderr +++ b/tests/ui/iterators/issue-28098.stderr diff --git a/src/test/ui/iterators/issue-58952-filter-type-length.rs b/tests/ui/iterators/issue-58952-filter-type-length.rs index 6d12db8d1..6d12db8d1 100644 --- a/src/test/ui/iterators/issue-58952-filter-type-length.rs +++ b/tests/ui/iterators/issue-58952-filter-type-length.rs diff --git a/src/test/ui/iterators/iter-cloned-type-inference.rs b/tests/ui/iterators/iter-cloned-type-inference.rs index 898e33719..898e33719 100644 --- a/src/test/ui/iterators/iter-cloned-type-inference.rs +++ b/tests/ui/iterators/iter-cloned-type-inference.rs diff --git a/src/test/ui/iterators/iter-count-overflow-debug.rs b/tests/ui/iterators/iter-count-overflow-debug.rs index 8e59c11e9..8e59c11e9 100644 --- a/src/test/ui/iterators/iter-count-overflow-debug.rs +++ b/tests/ui/iterators/iter-count-overflow-debug.rs diff --git a/src/test/ui/iterators/iter-count-overflow-ndebug.rs b/tests/ui/iterators/iter-count-overflow-ndebug.rs index dcaaff671..dcaaff671 100644 --- a/src/test/ui/iterators/iter-count-overflow-ndebug.rs +++ b/tests/ui/iterators/iter-count-overflow-ndebug.rs diff --git a/src/test/ui/iterators/iter-map-fold-type-length.rs b/tests/ui/iterators/iter-map-fold-type-length.rs index 8ce4fcd87..8ce4fcd87 100644 --- a/src/test/ui/iterators/iter-map-fold-type-length.rs +++ b/tests/ui/iterators/iter-map-fold-type-length.rs diff --git a/src/test/ui/iterators/iter-position-overflow-debug.rs b/tests/ui/iterators/iter-position-overflow-debug.rs index 7a871e744..7a871e744 100644 --- a/src/test/ui/iterators/iter-position-overflow-debug.rs +++ b/tests/ui/iterators/iter-position-overflow-debug.rs diff --git a/src/test/ui/iterators/iter-position-overflow-ndebug.rs b/tests/ui/iterators/iter-position-overflow-ndebug.rs index e610c3559..e610c3559 100644 --- a/src/test/ui/iterators/iter-position-overflow-ndebug.rs +++ b/tests/ui/iterators/iter-position-overflow-ndebug.rs diff --git a/src/test/ui/iterators/iter-range.rs b/tests/ui/iterators/iter-range.rs index 993d93790..993d93790 100644 --- a/src/test/ui/iterators/iter-range.rs +++ b/tests/ui/iterators/iter-range.rs diff --git a/src/test/ui/iterators/iter-step-overflow-debug.rs b/tests/ui/iterators/iter-step-overflow-debug.rs index 6aa349ebe..6aa349ebe 100644 --- a/src/test/ui/iterators/iter-step-overflow-debug.rs +++ b/tests/ui/iterators/iter-step-overflow-debug.rs diff --git a/src/test/ui/iterators/iter-step-overflow-ndebug.rs b/tests/ui/iterators/iter-step-overflow-ndebug.rs index 33e708769..33e708769 100644 --- a/src/test/ui/iterators/iter-step-overflow-ndebug.rs +++ b/tests/ui/iterators/iter-step-overflow-ndebug.rs diff --git a/src/test/ui/iterators/iter-sum-overflow-debug.rs b/tests/ui/iterators/iter-sum-overflow-debug.rs index 24c764ff9..24c764ff9 100644 --- a/src/test/ui/iterators/iter-sum-overflow-debug.rs +++ b/tests/ui/iterators/iter-sum-overflow-debug.rs diff --git a/src/test/ui/iterators/iter-sum-overflow-ndebug.rs b/tests/ui/iterators/iter-sum-overflow-ndebug.rs index 69f4744cc..69f4744cc 100644 --- a/src/test/ui/iterators/iter-sum-overflow-ndebug.rs +++ b/tests/ui/iterators/iter-sum-overflow-ndebug.rs diff --git a/src/test/ui/iterators/iter-sum-overflow-overflow-checks.rs b/tests/ui/iterators/iter-sum-overflow-overflow-checks.rs index be45c075d..be45c075d 100644 --- a/src/test/ui/iterators/iter-sum-overflow-overflow-checks.rs +++ b/tests/ui/iterators/iter-sum-overflow-overflow-checks.rs diff --git a/src/test/ui/iterators/ranges.rs b/tests/ui/iterators/ranges.rs index 925d2d61a..925d2d61a 100644 --- a/src/test/ui/iterators/ranges.rs +++ b/tests/ui/iterators/ranges.rs diff --git a/src/test/ui/iterators/ranges.stderr b/tests/ui/iterators/ranges.stderr index b9fbcd530..b9fbcd530 100644 --- a/src/test/ui/iterators/ranges.stderr +++ b/tests/ui/iterators/ranges.stderr diff --git a/src/test/ui/iterators/rsplit-clone.rs b/tests/ui/iterators/rsplit-clone.rs index 911da7429..911da7429 100644 --- a/src/test/ui/iterators/rsplit-clone.rs +++ b/tests/ui/iterators/rsplit-clone.rs diff --git a/src/test/ui/iterators/skip-count-overflow.rs b/tests/ui/iterators/skip-count-overflow.rs index 64dee3e3c..64dee3e3c 100644 --- a/src/test/ui/iterators/skip-count-overflow.rs +++ b/tests/ui/iterators/skip-count-overflow.rs diff --git a/src/test/ui/iterators/string.rs b/tests/ui/iterators/string.rs index ad58a463e..ad58a463e 100644 --- a/src/test/ui/iterators/string.rs +++ b/tests/ui/iterators/string.rs diff --git a/src/test/ui/iterators/string.stderr b/tests/ui/iterators/string.stderr index ddfe0169b..ddfe0169b 100644 --- a/src/test/ui/iterators/string.stderr +++ b/tests/ui/iterators/string.stderr diff --git a/src/test/ui/iterators/vec-on-unimplemented.rs b/tests/ui/iterators/vec-on-unimplemented.rs index 42b5d36bf..42b5d36bf 100644 --- a/src/test/ui/iterators/vec-on-unimplemented.rs +++ b/tests/ui/iterators/vec-on-unimplemented.rs diff --git a/tests/ui/iterators/vec-on-unimplemented.stderr b/tests/ui/iterators/vec-on-unimplemented.stderr new file mode 100644 index 000000000..a7d9c481a --- /dev/null +++ b/tests/ui/iterators/vec-on-unimplemented.stderr @@ -0,0 +1,18 @@ +error[E0599]: `Vec<bool>` is not an iterator + --> $DIR/vec-on-unimplemented.rs:2:23 + | +LL | vec![true, false].map(|v| !v).collect::<Vec<_>>(); + | ^^^ `Vec<bool>` is not an iterator; try calling `.into_iter()` or `.iter()` + --> $SRC_DIR/alloc/src/vec/mod.rs:LL:COL + | + = note: doesn't satisfy `Vec<bool>: Iterator` + | + = note: the following trait bounds were not satisfied: + `Vec<bool>: Iterator` + which is required by `&mut Vec<bool>: Iterator` + `[bool]: Iterator` + which is required by `&mut [bool]: Iterator` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0599`. |