From 44780aca5d9a92251df6b027747790bdcbb29c06 Mon Sep 17 00:00:00 2001 From: Jonathan Goodman Date: Thu, 8 Feb 2018 13:26:50 -0600 Subject: [PATCH] make the copies.rs test actually test the correct lints --- tests/ui/copies.rs | 55 +++-- tests/ui/copies.stderr | 454 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 448 insertions(+), 61 deletions(-) diff --git a/tests/ui/copies.rs b/tests/ui/copies.rs index 0488591ba..e5f581079 100644 --- a/tests/ui/copies.rs +++ b/tests/ui/copies.rs @@ -1,14 +1,7 @@ #![feature(dotdoteq_in_patterns, inclusive_range_syntax)] -#![allow(dead_code, no_effect, unnecessary_operation)] -#![allow(let_and_return)] -#![allow(needless_return)] -#![allow(unused_variables)] -#![allow(cyclomatic_complexity)] -#![allow(blacklisted_name)] -#![allow(collapsible_if)] -#![allow(zero_divided_by_zero, eq_op)] -#![allow(path_statements)] +#![allow(blacklisted_name, collapsible_if, cyclomatic_complexity, eq_op, needless_continue, + needless_return, never_loop, no_effect, zero_divided_by_zero)] fn bar(_: T) {} fn foo() -> bool { unimplemented!() } @@ -35,7 +28,7 @@ fn if_same_then_else() -> Result<&'static str, ()> { 0..=10; foo(); } - else { + else { //~ ERROR same body as `if` block Foo { bar: 42 }; 0..10; ..; @@ -84,7 +77,7 @@ fn if_same_then_else() -> Result<&'static str, ()> { a = -31-a; a } - _ => { + _ => { //~ ERROR match arms have same body foo(); let mut a = 42 + [23].len() as i32; if true { @@ -98,7 +91,7 @@ fn if_same_then_else() -> Result<&'static str, ()> { let _ = match Abc::A { Abc::A => 0, Abc::B => 1, - _ => 0, + _ => 0, //~ ERROR match arms have same body }; if true { @@ -108,7 +101,7 @@ fn if_same_then_else() -> Result<&'static str, ()> { let _ = if true { 42 } - else { + else { //~ ERROR same body as `if` block 42 }; @@ -122,7 +115,7 @@ fn if_same_then_else() -> Result<&'static str, ()> { } } } - else { + else { //~ ERROR same body as `if` block for _ in &[42] { let foo: &Option<_> = &Some::(42); if true { @@ -144,7 +137,7 @@ fn if_same_then_else() -> Result<&'static str, ()> { while foo() { break; } bar + 1; } - else { + else { //~ ERROR same body as `if` block let bar = if true { 42 } @@ -167,7 +160,7 @@ fn if_same_then_else() -> Result<&'static str, ()> { else if false { foo(); } - else if foo() { + else if foo() { //~ ERROR same body as `if` block let _ = match 42 { 42 => 1, a if a > 0 => 2, @@ -179,14 +172,14 @@ fn if_same_then_else() -> Result<&'static str, ()> { if true { if let Some(a) = Some(42) {} } - else { + else { //~ ERROR same body as `if` block if let Some(a) = Some(42) {} } if true { if let (1, .., 3) = (1, 2, 3) {} } - else { + else { //~ ERROR same body as `if` block if let (1, .., 3) = (1, 2, 3) {} } @@ -241,13 +234,13 @@ fn if_same_then_else() -> Result<&'static str, ()> { let _ = match 42 { 42 => foo(), - 51 => foo(), + 51 => foo(), //~ ERROR match arms have same body _ => true, }; let _ = match Some(42) { Some(_) => 24, - None => 24, + None => 24, //~ ERROR match arms have same body }; let _ = match Some(42) { @@ -269,31 +262,31 @@ fn if_same_then_else() -> Result<&'static str, ()> { match (Some(42), Some(42)) { (Some(a), None) => bar(a), - (None, Some(a)) => bar(a), + (None, Some(a)) => bar(a), //~ ERROR match arms have same body _ => (), } match (Some(42), Some(42)) { (Some(a), ..) => bar(a), - (.., Some(a)) => bar(a), + (.., Some(a)) => bar(a), //~ ERROR match arms have same body _ => (), } match (1, 2, 3) { (1, .., 3) => 42, - (.., 3) => 42, + (.., 3) => 42, //~ ERROR match arms have same body _ => 0, }; let _ = if true { 0.0 - } else { + } else { //~ ERROR same body as `if` block 0.0 }; let _ = if true { -0.0 - } else { + } else { //~ ERROR same body as `if` block -0.0 }; @@ -313,7 +306,7 @@ fn if_same_then_else() -> Result<&'static str, ()> { // Same NaNs let _ = if true { std::f32::NAN - } else { + } else { //~ ERROR same body as `if` block std::f32::NAN }; @@ -331,7 +324,7 @@ fn if_same_then_else() -> Result<&'static str, ()> { if true { try!(Ok("foo")); } - else { + else { //~ ERROR same body as `if` block try!(Ok("foo")); } @@ -343,7 +336,7 @@ fn if_same_then_else() -> Result<&'static str, ()> { let foo = "bar"; return Ok(&foo[0..]); } - else { + else { //~ ERROR same body as `if` block let foo = ""; return Ok(&foo[0..]); } @@ -357,19 +350,19 @@ fn ifs_same_cond() { if b { } - else if b { + else if b { //~ ERROR ifs same condition } if a == 1 { } - else if a == 1 { + else if a == 1 { //~ ERROR ifs same condition } if 2*a == 1 { } else if 2*a == 2 { } - else if 2*a == 1 { + else if 2*a == 1 { //~ ERROR ifs same condition } else if a == 1 { } diff --git a/tests/ui/copies.stderr b/tests/ui/copies.stderr index 9accb310d..c6034a199 100644 --- a/tests/ui/copies.stderr +++ b/tests/ui/copies.stderr @@ -1,37 +1,431 @@ -error: This else block is redundant. +error: this `if` has identical blocks + --> $DIR/copies.rs:31:10 + | +31 | else { //~ ERROR same body as `if` block + | __________^ +32 | | Foo { bar: 42 }; +33 | | 0..10; +34 | | ..; +... | +38 | | foo(); +39 | | } + | |_____^ + | + = note: `-D if-same-then-else` implied by `-D warnings` +note: same as this + --> $DIR/copies.rs:22:13 + | +22 | if true { + | _____________^ +23 | | Foo { bar: 42 }; +24 | | 0..10; +25 | | ..; +... | +29 | | foo(); +30 | | } + | |_____^ - --> $DIR/copies.rs:120:20 +error: this `match` has identical arm bodies + --> $DIR/copies.rs:80:14 + | +80 | _ => { //~ ERROR match arms have same body + | ______________^ +81 | | foo(); +82 | | let mut a = 42 + [23].len() as i32; +83 | | if true { +... | +87 | | a +88 | | } + | |_________^ + | + = note: `-D match-same-arms` implied by `-D warnings` +note: same as this + --> $DIR/copies.rs:71:15 + | +71 | 42 => { + | _______________^ +72 | | foo(); +73 | | let mut a = 42 + [23].len() as i32; +74 | | if true { +... | +78 | | a +79 | | } + | |_________^ +note: `42` has the same arm body as the `_` wildcard, consider removing it` + --> $DIR/copies.rs:71:15 + | +71 | 42 => { + | _______________^ +72 | | foo(); +73 | | let mut a = 42 + [23].len() as i32; +74 | | if true { +... | +78 | | a +79 | | } + | |_________^ + +error: this `match` has identical arm bodies + --> $DIR/copies.rs:94:14 + | +94 | _ => 0, //~ ERROR match arms have same body + | ^ + | +note: same as this + --> $DIR/copies.rs:92:19 + | +92 | Abc::A => 0, + | ^ +note: `Abc::A` has the same arm body as the `_` wildcard, consider removing it` + --> $DIR/copies.rs:92:19 + | +92 | Abc::A => 0, + | ^ + +error: this `if` has identical blocks + --> $DIR/copies.rs:104:10 | -120 | } else { - | ____________________^ -121 | | continue; -122 | | } - | |_____________^ +104 | else { //~ ERROR same body as `if` block + | __________^ +105 | | 42 +106 | | }; + | |_____^ | - = note: `-D needless-continue` implied by `-D warnings` - = help: Consider dropping the else clause and merging the code that follows (in the loop) with the if block, like so: - if true { - break; - // Merged code follows... - } - - -error: This else block is redundant. - - --> $DIR/copies.rs:130:20 +note: same as this + --> $DIR/copies.rs:101:21 | -130 | } else { - | ____________________^ -131 | | continue; -132 | | } - | |_____________^ +101 | let _ = if true { + | _____________________^ +102 | | 42 +103 | | } + | |_____^ + +error: this `if` has identical blocks + --> $DIR/copies.rs:118:10 | - = help: Consider dropping the else clause and merging the code that follows (in the loop) with the if block, like so: - if true { - break; - // Merged code follows... - } - +118 | else { //~ ERROR same body as `if` block + | __________^ +119 | | for _ in &[42] { +120 | | let foo: &Option<_> = &Some::(42); +121 | | if true { +... | +126 | | } +127 | | } + | |_____^ + | +note: same as this + --> $DIR/copies.rs:108:13 + | +108 | if true { + | _____________^ +109 | | for _ in &[42] { +110 | | let foo: &Option<_> = &Some::(42); +111 | | if true { +... | +116 | | } +117 | | } + | |_____^ -error: aborting due to 2 previous errors +error: this `if` has identical blocks + --> $DIR/copies.rs:140:10 + | +140 | else { //~ ERROR same body as `if` block + | __________^ +141 | | let bar = if true { +142 | | 42 +143 | | } +... | +149 | | bar + 1; +150 | | } + | |_____^ + | +note: same as this + --> $DIR/copies.rs:129:13 + | +129 | if true { + | _____________^ +130 | | let bar = if true { +131 | | 42 +132 | | } +... | +138 | | bar + 1; +139 | | } + | |_____^ + +error: this `if` has identical blocks + --> $DIR/copies.rs:163:19 + | +163 | else if foo() { //~ ERROR same body as `if` block + | ___________________^ +164 | | let _ = match 42 { +165 | | 42 => 1, +166 | | a if a > 0 => 2, +... | +169 | | }; +170 | | } + | |_____^ + | +note: same as this + --> $DIR/copies.rs:152:13 + | +152 | if true { + | _____________^ +153 | | let _ = match 42 { +154 | | 42 => 1, +155 | | a if a > 0 => 2, +... | +158 | | }; +159 | | } + | |_____^ + +error: this `if` has identical blocks + --> $DIR/copies.rs:175:10 + | +175 | else { //~ ERROR same body as `if` block + | __________^ +176 | | if let Some(a) = Some(42) {} +177 | | } + | |_____^ + | +note: same as this + --> $DIR/copies.rs:172:13 + | +172 | if true { + | _____________^ +173 | | if let Some(a) = Some(42) {} +174 | | } + | |_____^ + +error: this `if` has identical blocks + --> $DIR/copies.rs:182:10 + | +182 | else { //~ ERROR same body as `if` block + | __________^ +183 | | if let (1, .., 3) = (1, 2, 3) {} +184 | | } + | |_____^ + | +note: same as this + --> $DIR/copies.rs:179:13 + | +179 | if true { + | _____________^ +180 | | if let (1, .., 3) = (1, 2, 3) {} +181 | | } + | |_____^ + +error: this `match` has identical arm bodies + --> $DIR/copies.rs:237:15 + | +237 | 51 => foo(), //~ ERROR match arms have same body + | ^^^^^ + | +note: same as this + --> $DIR/copies.rs:236:15 + | +236 | 42 => foo(), + | ^^^^^ +note: consider refactoring into `42 | 51` + --> $DIR/copies.rs:236:15 + | +236 | 42 => foo(), + | ^^^^^ + +error: this `match` has identical arm bodies + --> $DIR/copies.rs:243:17 + | +243 | None => 24, //~ ERROR match arms have same body + | ^^ + | +note: same as this + --> $DIR/copies.rs:242:20 + | +242 | Some(_) => 24, + | ^^ +note: consider refactoring into `Some(_) | None` + --> $DIR/copies.rs:242:20 + | +242 | Some(_) => 24, + | ^^ + +error: this `match` has identical arm bodies + --> $DIR/copies.rs:265:28 + | +265 | (None, Some(a)) => bar(a), //~ ERROR match arms have same body + | ^^^^^^ + | +note: same as this + --> $DIR/copies.rs:264:28 + | +264 | (Some(a), None) => bar(a), + | ^^^^^^ +note: consider refactoring into `(Some(a), None) | (None, Some(a))` + --> $DIR/copies.rs:264:28 + | +264 | (Some(a), None) => bar(a), + | ^^^^^^ + +error: this `match` has identical arm bodies + --> $DIR/copies.rs:271:26 + | +271 | (.., Some(a)) => bar(a), //~ ERROR match arms have same body + | ^^^^^^ + | +note: same as this + --> $DIR/copies.rs:270:26 + | +270 | (Some(a), ..) => bar(a), + | ^^^^^^ +note: consider refactoring into `(Some(a), ..) | (.., Some(a))` + --> $DIR/copies.rs:270:26 + | +270 | (Some(a), ..) => bar(a), + | ^^^^^^ + +error: this `match` has identical arm bodies + --> $DIR/copies.rs:277:20 + | +277 | (.., 3) => 42, //~ ERROR match arms have same body + | ^^ + | +note: same as this + --> $DIR/copies.rs:276:23 + | +276 | (1, .., 3) => 42, + | ^^ +note: consider refactoring into `(1, .., 3) | (.., 3)` + --> $DIR/copies.rs:276:23 + | +276 | (1, .., 3) => 42, + | ^^ + +error: this `if` has identical blocks + --> $DIR/copies.rs:283:12 + | +283 | } else { //~ ERROR same body as `if` block + | ____________^ +284 | | 0.0 +285 | | }; + | |_____^ + | +note: same as this + --> $DIR/copies.rs:281:21 + | +281 | let _ = if true { + | _____________________^ +282 | | 0.0 +283 | | } else { //~ ERROR same body as `if` block + | |_____^ + +error: this `if` has identical blocks + --> $DIR/copies.rs:289:12 + | +289 | } else { //~ ERROR same body as `if` block + | ____________^ +290 | | -0.0 +291 | | }; + | |_____^ + | +note: same as this + --> $DIR/copies.rs:287:21 + | +287 | let _ = if true { + | _____________________^ +288 | | -0.0 +289 | | } else { //~ ERROR same body as `if` block + | |_____^ + +error: this `if` has identical blocks + --> $DIR/copies.rs:309:12 + | +309 | } else { //~ ERROR same body as `if` block + | ____________^ +310 | | std::f32::NAN +311 | | }; + | |_____^ + | +note: same as this + --> $DIR/copies.rs:307:21 + | +307 | let _ = if true { + | _____________________^ +308 | | std::f32::NAN +309 | | } else { //~ ERROR same body as `if` block + | |_____^ + +error: this `if` has identical blocks + --> $DIR/copies.rs:327:10 + | +327 | else { //~ ERROR same body as `if` block + | __________^ +328 | | try!(Ok("foo")); +329 | | } + | |_____^ + | +note: same as this + --> $DIR/copies.rs:324:13 + | +324 | if true { + | _____________^ +325 | | try!(Ok("foo")); +326 | | } + | |_____^ + +error: this `if` has identical blocks + --> $DIR/copies.rs:339:10 + | +339 | else { //~ ERROR same body as `if` block + | __________^ +340 | | let foo = ""; +341 | | return Ok(&foo[0..]); +342 | | } + | |_____^ + | +note: same as this + --> $DIR/copies.rs:331:13 + | +331 | if true { + | _____________^ +332 | | let foo = ""; +333 | | return Ok(&foo[0..]); +334 | | } + | |_____^ + +error: this `if` has the same condition as a previous if + --> $DIR/copies.rs:353:13 + | +353 | else if b { //~ ERROR ifs same condition + | ^ + | + = note: `-D ifs-same-cond` implied by `-D warnings` +note: same as this + --> $DIR/copies.rs:351:8 + | +351 | if b { + | ^ + +error: this `if` has the same condition as a previous if + --> $DIR/copies.rs:358:13 + | +358 | else if a == 1 { //~ ERROR ifs same condition + | ^^^^^^ + | +note: same as this + --> $DIR/copies.rs:356:8 + | +356 | if a == 1 { + | ^^^^^^ + +error: this `if` has the same condition as a previous if + --> $DIR/copies.rs:365:13 + | +365 | else if 2*a == 1 { //~ ERROR ifs same condition + | ^^^^^^^^ + | +note: same as this + --> $DIR/copies.rs:361:8 + | +361 | if 2*a == 1 { + | ^^^^^^^^ + +error: aborting due to 22 previous errors