6289ed8428
and replace it with a simple note suggesting returning a value. The type mismatch error was never due to how many times the loop iterates. It is more because of the peculiar structure of what the for loop desugars to. So the note talking about iteration count didn't make sense
300 lines
8.4 KiB
Plaintext
300 lines
8.4 KiB
Plaintext
warning: denote infinite loops with `loop { ... }`
|
|
--> $DIR/coerce-loop-issue-122561.rs:48:5
|
|
|
|
|
LL | while true {
|
|
| ^^^^^^^^^^ help: use `loop`
|
|
|
|
|
= note: `#[warn(while_true)]` on by default
|
|
|
|
warning: denote infinite loops with `loop { ... }`
|
|
--> $DIR/coerce-loop-issue-122561.rs:72:5
|
|
|
|
|
LL | while true {
|
|
| ^^^^^^^^^^ help: use `loop`
|
|
|
|
error[E0658]: `for` is not allowed in a `const`
|
|
--> $DIR/coerce-loop-issue-122561.rs:41:24
|
|
|
|
|
LL | fn for_in_arg(a: &[(); for x in 0..2 {}]) -> bool {
|
|
| ^^^^^^^^^^^^^^^^
|
|
|
|
|
= note: see issue #87575 <https://github.com/rust-lang/rust/issues/87575> for more information
|
|
= help: add `#![feature(const_for)]` to the crate attributes to enable
|
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
|
|
|
error[E0658]: `for` is not allowed in a `const`
|
|
--> $DIR/coerce-loop-issue-122561.rs:86:5
|
|
|
|
|
LL | / for i in 0.. {
|
|
LL | |
|
|
LL | |
|
|
LL | | }
|
|
| |_____^
|
|
|
|
|
= note: see issue #87575 <https://github.com/rust-lang/rust/issues/87575> for more information
|
|
= help: add `#![feature(const_for)]` to the crate attributes to enable
|
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
|
|
|
error[E0658]: `for` is not allowed in a `const`
|
|
--> $DIR/coerce-loop-issue-122561.rs:94:9
|
|
|
|
|
LL | / for i in 0..5 {
|
|
LL | |
|
|
LL | |
|
|
LL | | }
|
|
| |_________^
|
|
|
|
|
= note: see issue #87575 <https://github.com/rust-lang/rust/issues/87575> for more information
|
|
= help: add `#![feature(const_for)]` to the crate attributes to enable
|
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
|
|
|
error[E0658]: `for` is not allowed in a `const`
|
|
--> $DIR/coerce-loop-issue-122561.rs:107:23
|
|
|
|
|
LL | let _ = |a: &[(); for x in 0..2 {}]| {};
|
|
| ^^^^^^^^^^^^^^^^
|
|
|
|
|
= note: see issue #87575 <https://github.com/rust-lang/rust/issues/87575> for more information
|
|
= help: add `#![feature(const_for)]` to the crate attributes to enable
|
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:41:24
|
|
|
|
|
LL | fn for_in_arg(a: &[(); for x in 0..2 {}]) -> bool {
|
|
| ^^^^^^^^^^^^^^^^ expected `usize`, found `()`
|
|
|
|
|
= note: `for` loops evaluate to unit type `()`
|
|
help: consider returning a value here
|
|
|
|
|
LL | fn for_in_arg(a: &[(); for x in 0..2 {} /* `usize` value */]) -> bool {
|
|
| +++++++++++++++++++
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:86:5
|
|
|
|
|
LL | / for i in 0.. {
|
|
LL | |
|
|
LL | |
|
|
LL | | }
|
|
| |_____^ expected `i32`, found `()`
|
|
|
|
|
= note: `for` loops evaluate to unit type `()`
|
|
help: consider returning a value here
|
|
|
|
|
LL ~ }
|
|
LL + /* `i32` value */
|
|
|
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:4:5
|
|
|
|
|
LL | fn for_infinite() -> bool {
|
|
| ---- expected `bool` because of return type
|
|
LL | / for i in 0.. {
|
|
LL | |
|
|
LL | | return false;
|
|
LL | | }
|
|
| |_____^ expected `bool`, found `()`
|
|
|
|
|
= note: `for` loops evaluate to unit type `()`
|
|
help: consider returning a value here
|
|
|
|
|
LL ~ }
|
|
LL + /* `bool` value */
|
|
|
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:11:5
|
|
|
|
|
LL | fn for_finite() -> String {
|
|
| ------ expected `String` because of return type
|
|
LL | / for i in 0..5 {
|
|
LL | |
|
|
LL | | return String::from("test");
|
|
LL | | }
|
|
| |_____^ expected `String`, found `()`
|
|
|
|
|
= note: `for` loops evaluate to unit type `()`
|
|
help: consider returning a value here
|
|
|
|
|
LL ~ }
|
|
LL + /* `String` value */
|
|
|
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:18:5
|
|
|
|
|
LL | fn for_zero_times() -> bool {
|
|
| ---- expected `bool` because of return type
|
|
LL | / for i in 0..0 {
|
|
LL | |
|
|
LL | | return true;
|
|
LL | | }
|
|
| |_____^ expected `bool`, found `()`
|
|
|
|
|
= note: `for` loops evaluate to unit type `()`
|
|
help: consider returning a value here
|
|
|
|
|
LL ~ }
|
|
LL + /* `bool` value */
|
|
|
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:25:5
|
|
|
|
|
LL | fn for_never_type() -> ! {
|
|
| - expected `!` because of return type
|
|
LL | / for i in 0..5 {
|
|
LL | |
|
|
LL | | }
|
|
| |_____^ expected `!`, found `()`
|
|
|
|
|
= note: expected type `!`
|
|
found unit type `()`
|
|
= note: `for` loops evaluate to unit type `()`
|
|
help: consider adding a diverging expression here
|
|
|
|
|
LL ~ }
|
|
LL + /* `loop {}` or `panic!("...")` */
|
|
|
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:33:32
|
|
|
|
|
LL | fn for_single_line() -> bool { for i in 0.. { return false; } }
|
|
| ---- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `bool`, found `()`
|
|
| |
|
|
| expected `bool` because of return type
|
|
|
|
|
= note: `for` loops evaluate to unit type `()`
|
|
help: consider returning a value here
|
|
|
|
|
LL | fn for_single_line() -> bool { for i in 0.. { return false; } /* `bool` value */ }
|
|
| ++++++++++++++++++
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:48:5
|
|
|
|
|
LL | fn while_inifinite() -> bool {
|
|
| ---- expected `bool` because of return type
|
|
LL | / while true {
|
|
LL | |
|
|
LL | |
|
|
LL | | return true;
|
|
LL | | }
|
|
| |_____^ expected `bool`, found `()`
|
|
|
|
|
= note: `while` loops evaluate to unit type `()`
|
|
help: consider returning a value here
|
|
|
|
|
LL ~ }
|
|
LL + /* `bool` value */
|
|
|
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:57:5
|
|
|
|
|
LL | fn while_finite() -> bool {
|
|
| ---- expected `bool` because of return type
|
|
LL | let mut i = 0;
|
|
LL | / while i < 3 {
|
|
LL | |
|
|
LL | | i += 1;
|
|
LL | | return true;
|
|
LL | | }
|
|
| |_____^ expected `bool`, found `()`
|
|
|
|
|
= note: `while` loops evaluate to unit type `()`
|
|
help: consider returning a value here
|
|
|
|
|
LL ~ }
|
|
LL + /* `bool` value */
|
|
|
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:65:5
|
|
|
|
|
LL | fn while_zero_times() -> bool {
|
|
| ---- expected `bool` because of return type
|
|
LL | / while false {
|
|
LL | |
|
|
LL | | return true;
|
|
LL | | }
|
|
| |_____^ expected `bool`, found `()`
|
|
|
|
|
= note: `while` loops evaluate to unit type `()`
|
|
help: consider returning a value here
|
|
|
|
|
LL ~ }
|
|
LL + /* `bool` value */
|
|
|
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:72:5
|
|
|
|
|
LL | fn while_never_type() -> ! {
|
|
| - expected `!` because of return type
|
|
LL | / while true {
|
|
LL | |
|
|
LL | |
|
|
LL | | }
|
|
| |_____^ expected `!`, found `()`
|
|
|
|
|
= note: expected type `!`
|
|
found unit type `()`
|
|
= note: `while` loops evaluate to unit type `()`
|
|
help: consider adding a diverging expression here
|
|
|
|
|
LL ~ }
|
|
LL + /* `loop {}` or `panic!("...")` */
|
|
|
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:94:9
|
|
|
|
|
LL | / for i in 0..5 {
|
|
LL | |
|
|
LL | |
|
|
LL | | }
|
|
| |_________^ expected `usize`, found `()`
|
|
|
|
|
= note: `for` loops evaluate to unit type `()`
|
|
help: consider returning a value here
|
|
|
|
|
LL ~ }
|
|
LL + /* `usize` value */
|
|
|
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:101:9
|
|
|
|
|
LL | / while false {
|
|
LL | |
|
|
LL | | }
|
|
| |_________^ expected `usize`, found `()`
|
|
|
|
|
= note: `while` loops evaluate to unit type `()`
|
|
help: consider returning a value here
|
|
|
|
|
LL ~ }
|
|
LL + /* `usize` value */
|
|
|
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/coerce-loop-issue-122561.rs:107:23
|
|
|
|
|
LL | let _ = |a: &[(); for x in 0..2 {}]| {};
|
|
| ^^^^^^^^^^^^^^^^ expected `usize`, found `()`
|
|
|
|
|
= note: `for` loops evaluate to unit type `()`
|
|
help: consider returning a value here
|
|
|
|
|
LL | let _ = |a: &[(); for x in 0..2 {} /* `usize` value */]| {};
|
|
| +++++++++++++++++++
|
|
|
|
error: aborting due to 18 previous errors; 2 warnings emitted
|
|
|
|
Some errors have detailed explanations: E0308, E0658.
|
|
For more information about an error, try `rustc --explain E0308`.
|