infinite_loop: continuing an outer loop leaves the inner loop
This commit is contained in:
parent
1c9e5d0e5c
commit
99ce411ed6
3 changed files with 117 additions and 2 deletions
|
|
@ -390,4 +390,42 @@ fn span_inside_fn() {
|
|||
}
|
||||
}
|
||||
|
||||
fn continue_outer() {
|
||||
// Should not lint (issue #13511)
|
||||
let mut count = 0;
|
||||
'outer: loop {
|
||||
if count != 0 {
|
||||
break;
|
||||
}
|
||||
|
||||
loop {
|
||||
count += 1;
|
||||
continue 'outer;
|
||||
}
|
||||
}
|
||||
|
||||
// This should lint as we continue the loop itself
|
||||
'infinite: loop {
|
||||
//~^ ERROR: infinite loop detected
|
||||
loop {
|
||||
continue 'infinite;
|
||||
}
|
||||
}
|
||||
// This should lint as we continue an inner loop
|
||||
loop {
|
||||
//~^ ERROR: infinite loop detected
|
||||
'inner: loop {
|
||||
loop {
|
||||
continue 'inner;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This should lint as we continue the loop itself
|
||||
loop {
|
||||
//~^ ERROR: infinite loop detected
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -255,5 +255,67 @@ LL | | })
|
|||
|
|
||||
= help: if this is not intended, try adding a `break` or `return` condition in the loop
|
||||
|
||||
error: aborting due to 17 previous errors
|
||||
error: infinite loop detected
|
||||
--> tests/ui/infinite_loops.rs:408:5
|
||||
|
|
||||
LL | / 'infinite: loop {
|
||||
LL | |
|
||||
LL | | loop {
|
||||
LL | | continue 'infinite;
|
||||
LL | | }
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
|
||||
help: if this is intentional, consider specifying `!` as function return
|
||||
|
|
||||
LL | fn continue_outer() -> ! {
|
||||
| ++++
|
||||
|
||||
error: infinite loop detected
|
||||
--> tests/ui/infinite_loops.rs:415:5
|
||||
|
|
||||
LL | / loop {
|
||||
LL | |
|
||||
LL | | 'inner: loop {
|
||||
LL | | loop {
|
||||
... |
|
||||
LL | | }
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
|
||||
help: if this is intentional, consider specifying `!` as function return
|
||||
|
|
||||
LL | fn continue_outer() -> ! {
|
||||
| ++++
|
||||
|
||||
error: infinite loop detected
|
||||
--> tests/ui/infinite_loops.rs:417:9
|
||||
|
|
||||
LL | / 'inner: loop {
|
||||
LL | | loop {
|
||||
LL | | continue 'inner;
|
||||
LL | | }
|
||||
LL | | }
|
||||
| |_________^
|
||||
|
|
||||
help: if this is intentional, consider specifying `!` as function return
|
||||
|
|
||||
LL | fn continue_outer() -> ! {
|
||||
| ++++
|
||||
|
||||
error: infinite loop detected
|
||||
--> tests/ui/infinite_loops.rs:425:5
|
||||
|
|
||||
LL | / loop {
|
||||
LL | |
|
||||
LL | | continue;
|
||||
LL | | }
|
||||
| |_____^
|
||||
|
|
||||
help: if this is intentional, consider specifying `!` as function return
|
||||
|
|
||||
LL | fn continue_outer() -> ! {
|
||||
| ++++
|
||||
|
||||
error: aborting due to 21 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue