mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 15:23:46 +00:00
Check pattern equality while checking declaration equality
This commit is contained in:
parent
aee138a7cf
commit
911a752561
@ -54,7 +54,9 @@ impl<'a, 'tcx: 'a> SpanlessEq<'a, 'tcx> {
|
||||
match (&left.node, &right.node) {
|
||||
(&StmtKind::Decl(ref l, _), &StmtKind::Decl(ref r, _)) => {
|
||||
if let (&DeclKind::Local(ref l), &DeclKind::Local(ref r)) = (&l.node, &r.node) {
|
||||
both(&l.ty, &r.ty, |l, r| self.eq_ty(l, r)) && both(&l.init, &r.init, |l, r| self.eq_expr(l, r))
|
||||
self.eq_pat(&l.pat, &r.pat)
|
||||
&& both(&l.ty, &r.ty, |l, r| self.eq_ty(l, r))
|
||||
&& both(&l.init, &r.init, |l, r| self.eq_expr(l, r))
|
||||
} else {
|
||||
false
|
||||
}
|
||||
|
@ -335,6 +335,17 @@ fn if_same_then_else() -> Result<&'static str, ()> {
|
||||
let foo = "";
|
||||
return Ok(&foo[0..]);
|
||||
}
|
||||
|
||||
// false positive if_same_then_else, let(x,y) vs let(y,x), see #3559
|
||||
if true {
|
||||
let foo = "";
|
||||
let (x, y) = (1, 2);
|
||||
return Ok(&foo[x..y]);
|
||||
} else {
|
||||
let foo = "";
|
||||
let (y, x) = (1, 2);
|
||||
return Ok(&foo[x..y]);
|
||||
}
|
||||
}
|
||||
|
||||
#[warn(clippy::ifs_same_cond)]
|
||||
|
@ -352,38 +352,38 @@ LL | | } else {
|
||||
| |_____^
|
||||
|
||||
error: this `if` has the same condition as a previous if
|
||||
--> $DIR/copies.rs:347:15
|
||||
--> $DIR/copies.rs:358:15
|
||||
|
|
||||
LL | } else if b {
|
||||
| ^
|
||||
|
|
||||
= note: `-D clippy::ifs-same-cond` implied by `-D warnings`
|
||||
note: same as this
|
||||
--> $DIR/copies.rs:346:8
|
||||
--> $DIR/copies.rs:357:8
|
||||
|
|
||||
LL | if b {
|
||||
| ^
|
||||
|
||||
error: this `if` has the same condition as a previous if
|
||||
--> $DIR/copies.rs:352:15
|
||||
--> $DIR/copies.rs:363:15
|
||||
|
|
||||
LL | } else if a == 1 {
|
||||
| ^^^^^^
|
||||
|
|
||||
note: same as this
|
||||
--> $DIR/copies.rs:351:8
|
||||
--> $DIR/copies.rs:362:8
|
||||
|
|
||||
LL | if a == 1 {
|
||||
| ^^^^^^
|
||||
|
||||
error: this `if` has the same condition as a previous if
|
||||
--> $DIR/copies.rs:358:15
|
||||
--> $DIR/copies.rs:369:15
|
||||
|
|
||||
LL | } else if 2 * a == 1 {
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
note: same as this
|
||||
--> $DIR/copies.rs:356:8
|
||||
--> $DIR/copies.rs:367:8
|
||||
|
|
||||
LL | if 2 * a == 1 {
|
||||
| ^^^^^^^^^^
|
||||
|
Loading…
Reference in New Issue
Block a user