2018-10-06 16:18:06 +00:00
|
|
|
// 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.
|
|
|
|
|
|
|
|
|
2018-10-11 10:16:22 +00:00
|
|
|
|
2017-09-18 10:47:33 +00:00
|
|
|
|
|
|
|
|
2018-07-28 15:34:52 +00:00
|
|
|
#![allow(unused_variables, unused_assignments, clippy::similar_names, clippy::blacklisted_name)]
|
|
|
|
#![warn(clippy::useless_let_if_seq)]
|
2016-03-30 17:53:43 +00:00
|
|
|
|
|
|
|
fn f() -> bool { true }
|
2016-06-05 19:38:15 +00:00
|
|
|
fn g(x: i32) -> i32 { x + 1 }
|
|
|
|
|
|
|
|
fn issue985() -> i32 {
|
|
|
|
let mut x = 42;
|
|
|
|
if f() {
|
|
|
|
x = g(x);
|
|
|
|
}
|
|
|
|
|
|
|
|
x
|
|
|
|
}
|
|
|
|
|
|
|
|
fn issue985_alt() -> i32 {
|
|
|
|
let mut x = 42;
|
|
|
|
if f() {
|
|
|
|
f();
|
|
|
|
} else {
|
|
|
|
x = g(x);
|
|
|
|
}
|
|
|
|
|
|
|
|
x
|
|
|
|
}
|
2016-03-30 17:53:43 +00:00
|
|
|
|
2016-06-03 17:35:39 +00:00
|
|
|
fn issue975() -> String {
|
|
|
|
let mut udn = "dummy".to_string();
|
|
|
|
if udn.starts_with("uuid:") {
|
|
|
|
udn = String::from(&udn[5..]);
|
|
|
|
}
|
|
|
|
udn
|
|
|
|
}
|
|
|
|
|
2016-03-30 17:53:43 +00:00
|
|
|
fn early_return() -> u8 {
|
|
|
|
// FIXME: we could extend the lint to include such cases:
|
|
|
|
let foo;
|
|
|
|
|
|
|
|
if f() {
|
|
|
|
return 42;
|
|
|
|
} else {
|
|
|
|
foo = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
foo
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
early_return();
|
2016-06-03 17:35:39 +00:00
|
|
|
issue975();
|
2016-06-05 19:38:15 +00:00
|
|
|
issue985();
|
|
|
|
issue985_alt();
|
2016-03-30 17:53:43 +00:00
|
|
|
|
|
|
|
let mut foo = 0;
|
|
|
|
if f() {
|
|
|
|
foo = 42;
|
|
|
|
}
|
|
|
|
|
|
|
|
let mut bar = 0;
|
|
|
|
if f() {
|
|
|
|
f();
|
|
|
|
bar = 42;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
f();
|
|
|
|
}
|
|
|
|
|
|
|
|
let quz;
|
|
|
|
if f() {
|
|
|
|
quz = 42;
|
|
|
|
} else {
|
|
|
|
quz = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
// `toto` is used several times
|
|
|
|
let mut toto;
|
|
|
|
if f() {
|
|
|
|
toto = 42;
|
|
|
|
} else {
|
|
|
|
for i in &[1, 2] {
|
|
|
|
toto = *i;
|
|
|
|
}
|
|
|
|
|
|
|
|
toto = 2;
|
|
|
|
}
|
|
|
|
|
2016-06-08 22:22:59 +00:00
|
|
|
// found in libcore, the inner if is not a statement but the block's expr
|
|
|
|
let mut ch = b'x';
|
|
|
|
if f() {
|
|
|
|
ch = b'*';
|
|
|
|
if f() {
|
|
|
|
ch = b'?';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-03-30 17:53:43 +00:00
|
|
|
// baz needs to be mut
|
|
|
|
let mut baz = 0;
|
|
|
|
if f() {
|
|
|
|
baz = 42;
|
|
|
|
}
|
|
|
|
|
|
|
|
baz = 1337;
|
|
|
|
}
|