mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-27 09:14:20 +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) {
|
match (&left.node, &right.node) {
|
||||||
(&StmtKind::Decl(ref l, _), &StmtKind::Decl(ref r, _)) => {
|
(&StmtKind::Decl(ref l, _), &StmtKind::Decl(ref r, _)) => {
|
||||||
if let (&DeclKind::Local(ref l), &DeclKind::Local(ref r)) = (&l.node, &r.node) {
|
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 {
|
} else {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
@ -335,6 +335,17 @@ fn if_same_then_else() -> Result<&'static str, ()> {
|
|||||||
let foo = "";
|
let foo = "";
|
||||||
return Ok(&foo[0..]);
|
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)]
|
#[warn(clippy::ifs_same_cond)]
|
||||||
|
@ -352,38 +352,38 @@ LL | | } else {
|
|||||||
| |_____^
|
| |_____^
|
||||||
|
|
||||||
error: this `if` has the same condition as a previous if
|
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 {
|
LL | } else if b {
|
||||||
| ^
|
| ^
|
||||||
|
|
|
|
||||||
= note: `-D clippy::ifs-same-cond` implied by `-D warnings`
|
= note: `-D clippy::ifs-same-cond` implied by `-D warnings`
|
||||||
note: same as this
|
note: same as this
|
||||||
--> $DIR/copies.rs:346:8
|
--> $DIR/copies.rs:357:8
|
||||||
|
|
|
|
||||||
LL | if b {
|
LL | if b {
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: this `if` has the same condition as a previous if
|
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 {
|
LL | } else if a == 1 {
|
||||||
| ^^^^^^
|
| ^^^^^^
|
||||||
|
|
|
|
||||||
note: same as this
|
note: same as this
|
||||||
--> $DIR/copies.rs:351:8
|
--> $DIR/copies.rs:362:8
|
||||||
|
|
|
|
||||||
LL | if a == 1 {
|
LL | if a == 1 {
|
||||||
| ^^^^^^
|
| ^^^^^^
|
||||||
|
|
||||||
error: this `if` has the same condition as a previous if
|
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 {
|
LL | } else if 2 * a == 1 {
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
|
|
||||||
note: same as this
|
note: same as this
|
||||||
--> $DIR/copies.rs:356:8
|
--> $DIR/copies.rs:367:8
|
||||||
|
|
|
|
||||||
LL | if 2 * a == 1 {
|
LL | if 2 * a == 1 {
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
Loading…
Reference in New Issue
Block a user