Rollup merge of #106740 - petar-dambovaliev:float-iterator-hint, r=Nilstrieb

Adding a hint on iterator type errors

Issue reference https://github.com/rust-lang/rust/issues/106728

- [x] add a case in the attribute
- [x] add a test

closes #106728
This commit is contained in:
Yuki Okushi 2023-01-13 05:47:23 +09:00 committed by GitHub
commit 7e5d477ac5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 0 deletions

View file

@ -58,6 +58,11 @@ fn _assert_is_object_safe(_: &dyn Iterator<Item = ()>) {}
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`"
),
on(
_Self = "{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`"
),
label = "`{Self}` is not an iterator",
message = "`{Self}` is not an iterator"
)]

View file

@ -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!();
}
}

View file

@ -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`.

View file

@ -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