-
-
-#![allow(single_match, unused_assignments, unused_variables)]
+// Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![allow(
+ clippy::single_match,
+ unused_assignments,
+ unused_variables,
+ clippy::while_immutable_condition
+)]
fn test1() {
let mut x = 0;
- loop { // never_loop
+ loop {
+ // clippy::never_loop
x += 1;
if x == 1 {
- return
+ return;
}
break;
}
loop {
x += 1;
if x == 1 {
- break
+ break;
}
}
}
fn test3() {
let mut x = 0;
- loop { // never loops
+ loop {
+ // never loops
x += 1;
- break
+ break;
}
}
fn test5() {
let i = 0;
- loop { // never loops
- while i == 0 { // never loops
- break
+ loop {
+ // never loops
+ while i == 0 {
+ // never loops
+ break;
}
- return
- }
+ return;
+ }
}
fn test6() {
let mut x = 0;
'outer: loop {
x += 1;
- loop { // never loops
- if x == 5 { break }
- continue 'outer
- }
- return
- }
+ loop {
+ // never loops
+ if x == 5 {
+ break;
+ }
+ continue 'outer;
+ }
+ return;
+ }
}
fn test7() {
1 => continue,
_ => (),
}
- return
+ return;
}
}
fn test9() {
let x = Some(1);
- while let Some(y) = x { // never loops
- return
+ while let Some(y) = x {
+ // never loops
+ return;
}
}
fn test10() {
- for x in 0..10 { // never loops
+ for x in 0..10 {
+ // never loops
match x {
1 => break,
_ => return,
return match f() {
1 => continue,
_ => (),
- }
+ };
}
}
pub fn test13() {
let mut a = true;
- loop { // infinite loop
+ loop {
+ // infinite loop
while a {
if true {
a = false;
}
}
+pub fn test14() {
+ let mut a = true;
+ 'outer: while a {
+ // never loops
+ while a {
+ if a {
+ a = false;
+ continue;
+ }
+ }
+ break 'outer;
+ }
+}
+
+// Issue #1991: the outter loop should not warn.
+pub fn test15() {
+ 'label: loop {
+ while false {
+ break 'label;
+ }
+ }
+}
+
fn main() {
test1();
test2();
test11(|| 0);
test12(true, false);
test13();
+ test14();
}
-