From 9f0cc93ac60806b17e1df7309cb2dc0d262bb2ee Mon Sep 17 00:00:00 2001 From: Seiichi Uchida Date: Thu, 14 Sep 2017 22:24:00 +0900 Subject: [PATCH 1/3] Bump version --- Cargo.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6511a5c2010..ffc84a488eb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ [root] name = "clippy_lints" -version = "0.0.159" +version = "0.0.161" dependencies = [ "itertools 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -73,11 +73,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "clippy" -version = "0.0.159" +version = "0.0.161" dependencies = [ "cargo_metadata 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "clippy-mini-macro-test 0.1.0", - "clippy_lints 0.0.159", + "clippy_lints 0.0.161", "compiletest_rs 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "duct 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", From 1f6801dd6ab1044143594334229c62f2c7346c8e Mon Sep 17 00:00:00 2001 From: Seiichi Uchida Date: Thu, 14 Sep 2017 22:26:59 +0900 Subject: [PATCH 2/3] Add ExprLoop to contains_continue_expr() --- clippy_lints/src/loops.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clippy_lints/src/loops.rs b/clippy_lints/src/loops.rs index 41218a989fc..f06831556c2 100644 --- a/clippy_lints/src/loops.rs +++ b/clippy_lints/src/loops.rs @@ -526,7 +526,7 @@ fn contains_continue_expr(expr: &Expr, dest: &NodeId) -> bool { ExprMatch(ref e, ref arms, _) => { contains_continue_expr(e, dest) || arms.iter().any(|a| contains_continue_expr(&a.body, dest)) }, - ExprBlock(ref block) => contains_continue_block(block, dest), + ExprBlock(ref block) | ExprLoop(ref block, ..) => contains_continue_block(block, dest), ExprStruct(_, _, ref base) => base.as_ref() .map_or(false, |e| contains_continue_expr(e, dest)), ExprAgain(d) => d.target_id.opt_id().map_or(false, |id| id == *dest), From 0215a1acb0230c3f81d47a3ee31ba562678f6be1 Mon Sep 17 00:00:00 2001 From: Seiichi Uchida Date: Thu, 14 Sep 2017 22:27:29 +0900 Subject: [PATCH 3/3] Update a test --- tests/ui/never_loop.rs | 17 ++++++++++++++++- tests/ui/never_loop.stderr | 14 +------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/tests/ui/never_loop.rs b/tests/ui/never_loop.rs index 50b8d499414..ff0126704b5 100644 --- a/tests/ui/never_loop.rs +++ b/tests/ui/never_loop.rs @@ -54,7 +54,7 @@ fn test5() { fn test6() { let mut x = 0; - 'outer: loop { // never loops + 'outer: loop { x += 1; loop { // never loops if x == 5 { break } @@ -112,6 +112,20 @@ fn test11 i32>(mut f: F) { } } +pub fn test12(a: bool, b: bool) { + 'label: loop { + loop { + if a { + continue 'label; + } + if b { + break; + } + } + break; + } +} + fn main() { test1(); test2(); @@ -124,5 +138,6 @@ fn main() { test9(); test10(); test11(|| 0); + test12(true, false); } diff --git a/tests/ui/never_loop.stderr b/tests/ui/never_loop.stderr index d1bfc4a95a8..dace2b7e261 100644 --- a/tests/ui/never_loop.stderr +++ b/tests/ui/never_loop.stderr @@ -40,18 +40,6 @@ error: this loop never actually loops 50 | | } | |_________^ -error: this loop never actually loops - --> $DIR/never_loop.rs:57:5 - | -57 | / 'outer: loop { // never loops -58 | | x += 1; -59 | | loop { // never loops -60 | | if x == 5 { break } -... | -63 | | return -64 | | } - | |__^ - error: this loop never actually loops --> $DIR/never_loop.rs:59:3 | @@ -80,5 +68,5 @@ error: this loop never actually loops 103 | | } | |_____^ -error: aborting due to 8 previous errors +error: aborting due to 7 previous errors