mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-08 01:28:18 +03:00
make never_loop applicability more flexible
This commit is contained in:
@@ -422,6 +422,34 @@ pub fn issue12205() -> Option<()> {
|
||||
}
|
||||
}
|
||||
|
||||
fn stmt_after_return() {
|
||||
for v in 0..10 {
|
||||
//~^ never_loop
|
||||
break;
|
||||
println!("{v}");
|
||||
}
|
||||
}
|
||||
|
||||
fn loop_label() {
|
||||
'outer: for v in 0..10 {
|
||||
//~^ never_loop
|
||||
loop {
|
||||
//~^ never_loop
|
||||
break 'outer;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
for v in 0..10 {
|
||||
//~^ never_loop
|
||||
'inner: loop {
|
||||
//~^ never_loop
|
||||
break 'inner;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
test1();
|
||||
test2();
|
||||
|
||||
@@ -164,5 +164,73 @@ LL | | unimplemented!("not yet");
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
||||
error: aborting due to 16 previous errors
|
||||
error: this loop never actually loops
|
||||
--> tests/ui/never_loop.rs:426:5
|
||||
|
|
||||
LL | / for v in 0..10 {
|
||||
LL | |
|
||||
LL | | break;
|
||||
LL | | println!("{v}");
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
|
||||
help: if you need the first element of the iterator, try writing
|
||||
|
|
||||
LL - for v in 0..10 {
|
||||
LL + if let Some(v) = (0..10).next() {
|
||||
|
|
||||
|
||||
error: this loop never actually loops
|
||||
--> tests/ui/never_loop.rs:434:5
|
||||
|
|
||||
LL | / 'outer: for v in 0..10 {
|
||||
LL | |
|
||||
LL | | loop {
|
||||
... |
|
||||
LL | | return;
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
|
||||
help: if you need the first element of the iterator, try writing
|
||||
|
|
||||
LL - 'outer: for v in 0..10 {
|
||||
LL + if let Some(v) = (0..10).next() {
|
||||
|
|
||||
|
||||
error: this loop never actually loops
|
||||
--> tests/ui/never_loop.rs:436:9
|
||||
|
|
||||
LL | / loop {
|
||||
LL | |
|
||||
LL | | break 'outer;
|
||||
LL | | }
|
||||
| |_________^
|
||||
|
||||
error: this loop never actually loops
|
||||
--> tests/ui/never_loop.rs:443:5
|
||||
|
|
||||
LL | / for v in 0..10 {
|
||||
LL | |
|
||||
LL | | 'inner: loop {
|
||||
... |
|
||||
LL | | return;
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
|
||||
help: if you need the first element of the iterator, try writing
|
||||
|
|
||||
LL - for v in 0..10 {
|
||||
LL + if let Some(v) = (0..10).next() {
|
||||
|
|
||||
|
||||
error: this loop never actually loops
|
||||
--> tests/ui/never_loop.rs:445:9
|
||||
|
|
||||
LL | / 'inner: loop {
|
||||
LL | |
|
||||
LL | | break 'inner;
|
||||
LL | | }
|
||||
| |_________^
|
||||
|
||||
error: aborting due to 21 previous errors
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#![allow(clippy::iter_next_slice, clippy::needless_return)]
|
||||
|
||||
fn no_break_or_continue_loop() {
|
||||
if let Some(i) = [1, 2, 3].iter().next() {
|
||||
//~^ never_loop
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fn no_break_or_continue_loop_outer() {
|
||||
if let Some(i) = [1, 2, 3].iter().next() {
|
||||
//~^ never_loop
|
||||
return;
|
||||
loop {
|
||||
if true {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#![allow(clippy::iter_next_slice, clippy::needless_return)]
|
||||
|
||||
fn no_break_or_continue_loop() {
|
||||
for i in [1, 2, 3].iter() {
|
||||
//~^ never_loop
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
fn no_break_or_continue_loop_outer() {
|
||||
for i in [1, 2, 3].iter() {
|
||||
//~^ never_loop
|
||||
return;
|
||||
loop {
|
||||
if true {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
error: this loop never actually loops
|
||||
--> tests/ui/never_loop_fixable.rs:4:5
|
||||
|
|
||||
LL | / for i in [1, 2, 3].iter() {
|
||||
LL | |
|
||||
LL | | return;
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
|
||||
= note: `#[deny(clippy::never_loop)]` on by default
|
||||
help: if you need the first element of the iterator, try writing
|
||||
|
|
||||
LL - for i in [1, 2, 3].iter() {
|
||||
LL + if let Some(i) = [1, 2, 3].iter().next() {
|
||||
|
|
||||
|
||||
error: this loop never actually loops
|
||||
--> tests/ui/never_loop_fixable.rs:11:5
|
||||
|
|
||||
LL | / for i in [1, 2, 3].iter() {
|
||||
LL | |
|
||||
LL | | return;
|
||||
LL | | loop {
|
||||
... |
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
|
||||
help: if you need the first element of the iterator, try writing
|
||||
|
|
||||
LL - for i in [1, 2, 3].iter() {
|
||||
LL + if let Some(i) = [1, 2, 3].iter().next() {
|
||||
|
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Reference in New Issue
Block a user