Auto merge of #4388 - flip1995:rustup, r=phansch
Rustup Supersedes #4387 and #4385 This removes tests with the `try!` macro in them completely. There is no need for Clippy to support the `try!` macro, since it is deprecated now. [`StmtKind`](https://doc.rust-lang.org/nightly/nightly-rustc/rustc/hir/enum.StmtKind.html) got a new variant [`Semi`](https://doc.rust-lang.org/nightly/nightly-rustc/rustc/hir/enum.StmtKind.html#variant.Semi), which Just Works with the `author` lint. Nice. changelog: none
This commit is contained in:
commit
34457fbd8b
@ -43,10 +43,9 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UnportableVariant {
|
|||||||
if cx.tcx.data_layout.pointer_size.bits() != 64 {
|
if cx.tcx.data_layout.pointer_size.bits() != 64 {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if let ItemKind::Enum(ref def, _) = item.node {
|
if let ItemKind::Enum(def, _) = &item.node {
|
||||||
for var in &def.variants {
|
for var in &def.variants {
|
||||||
let variant = &var.node;
|
if let Some(anon_const) = &var.disr_expr {
|
||||||
if let Some(ref anon_const) = variant.disr_expr {
|
|
||||||
let param_env = ty::ParamEnv::empty();
|
let param_env = ty::ParamEnv::empty();
|
||||||
let def_id = cx.tcx.hir().body_owner_def_id(anon_const.body);
|
let def_id = cx.tcx.hir().body_owner_def_id(anon_const.body);
|
||||||
let substs = InternalSubsts::identity_for_item(cx.tcx.global_tcx(), def_id);
|
let substs = InternalSubsts::identity_for_item(cx.tcx.global_tcx(), def_id);
|
||||||
|
@ -123,7 +123,7 @@ impl_lint_pass!(EnumVariantNames => [
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
fn var2str(var: &Variant) -> LocalInternedString {
|
fn var2str(var: &Variant) -> LocalInternedString {
|
||||||
var.node.ident.as_str()
|
var.ident.as_str()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the number of chars that match from the start
|
/// Returns the number of chars that match from the start
|
||||||
|
@ -85,7 +85,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for LargeEnumVariant {
|
|||||||
"large size difference between variants",
|
"large size difference between variants",
|
||||||
|db| {
|
|db| {
|
||||||
if variant.fields.len() == 1 {
|
if variant.fields.len() == 1 {
|
||||||
let span = match def.variants[i].node.data {
|
let span = match def.variants[i].data {
|
||||||
VariantData::Struct(ref fields, ..) | VariantData::Tuple(ref fields, ..) => {
|
VariantData::Struct(ref fields, ..) | VariantData::Tuple(ref fields, ..) => {
|
||||||
fields[0].ty.span
|
fields[0].ty.span
|
||||||
},
|
},
|
||||||
|
@ -197,6 +197,6 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MissingDoc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn check_variant(&mut self, cx: &LateContext<'a, 'tcx>, v: &'tcx hir::Variant, _: &hir::Generics) {
|
fn check_variant(&mut self, cx: &LateContext<'a, 'tcx>, v: &'tcx hir::Variant, _: &hir::Generics) {
|
||||||
self.check_missing_docs_attrs(cx, &v.node.attrs, v.span, "a variant");
|
self.check_missing_docs_attrs(cx, &v.attrs, v.span, "a variant");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Author {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn check_variant(&mut self, cx: &LateContext<'a, 'tcx>, var: &'tcx hir::Variant, generics: &hir::Generics) {
|
fn check_variant(&mut self, cx: &LateContext<'a, 'tcx>, var: &'tcx hir::Variant, generics: &hir::Generics) {
|
||||||
if !has_attr(cx.sess(), &var.node.attrs) {
|
if !has_attr(cx.sess(), &var.attrs) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
prelude();
|
prelude();
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#![feature(stmt_expr_attributes)]
|
#![feature(stmt_expr_attributes)]
|
||||||
|
#![allow(redundant_semicolon)]
|
||||||
|
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
fn main() {
|
fn main() {
|
||||||
|
@ -1,10 +1,16 @@
|
|||||||
error: statement with no effect
|
error: statement with no effect
|
||||||
--> $DIR/blocks.rs:14:5
|
--> $DIR/blocks.rs:8:9
|
||||||
|
|
|
|
||||||
LL | -x;
|
LL | ;;;;
|
||||||
| ^^^
|
| ^^^^
|
||||||
|
|
|
|
||||||
= note: `-D clippy::no-effect` implied by `-D warnings`
|
= note: `-D clippy::no-effect` implied by `-D warnings`
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: statement with no effect
|
||||||
|
--> $DIR/blocks.rs:15:5
|
||||||
|
|
|
||||||
|
LL | -x;
|
||||||
|
| ^^^
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
if_chain! {
|
if_chain! {
|
||||||
if let ExprKind::Block(ref block) = expr.node;
|
if let ExprKind::Block(ref block) = expr.node;
|
||||||
if let Some(trailing_expr) = &block.expr;
|
if let Some(trailing_expr) = &block.expr;
|
||||||
if block.stmts.len() == 0;
|
if block.stmts.len() == 1;
|
||||||
|
if let StmtKind::Semi(ref e, _) = block.stmts[0].node
|
||||||
|
if let ExprKind::Tup(ref elements) = e.node;
|
||||||
|
if elements.len() == 0;
|
||||||
then {
|
then {
|
||||||
// report your lint here
|
// report your lint here
|
||||||
}
|
}
|
||||||
|
@ -322,14 +322,14 @@ fn try_() -> Result<i32, &'static str> {
|
|||||||
|
|
||||||
#[clippy::cognitive_complexity = "0"]
|
#[clippy::cognitive_complexity = "0"]
|
||||||
fn try_again() -> Result<i32, &'static str> {
|
fn try_again() -> Result<i32, &'static str> {
|
||||||
let _ = r#try!(Ok(42));
|
let _ = Ok(42)?;
|
||||||
let _ = r#try!(Ok(43));
|
let _ = Ok(43)?;
|
||||||
let _ = r#try!(Ok(44));
|
let _ = Ok(44)?;
|
||||||
let _ = r#try!(Ok(45));
|
let _ = Ok(45)?;
|
||||||
let _ = r#try!(Ok(46));
|
let _ = Ok(46)?;
|
||||||
let _ = r#try!(Ok(47));
|
let _ = Ok(47)?;
|
||||||
let _ = r#try!(Ok(48));
|
let _ = Ok(48)?;
|
||||||
let _ = r#try!(Ok(49));
|
let _ = Ok(49)?;
|
||||||
match 5 {
|
match 5 {
|
||||||
5 => Ok(5),
|
5 => Ok(5),
|
||||||
_ => return Err("bla"),
|
_ => return Err("bla"),
|
||||||
|
@ -230,9 +230,9 @@ error: the function has a cognitive complexity of 1
|
|||||||
--> $DIR/cognitive_complexity.rs:324:1
|
--> $DIR/cognitive_complexity.rs:324:1
|
||||||
|
|
|
|
||||||
LL | / fn try_again() -> Result<i32, &'static str> {
|
LL | / fn try_again() -> Result<i32, &'static str> {
|
||||||
LL | | let _ = r#try!(Ok(42));
|
LL | | let _ = Ok(42)?;
|
||||||
LL | | let _ = r#try!(Ok(43));
|
LL | | let _ = Ok(43)?;
|
||||||
LL | | let _ = r#try!(Ok(44));
|
LL | | let _ = Ok(44)?;
|
||||||
... |
|
... |
|
||||||
LL | | }
|
LL | | }
|
||||||
LL | | }
|
LL | | }
|
||||||
|
@ -215,10 +215,10 @@ fn if_same_then_else() -> Result<&'static str, ()> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if true {
|
if true {
|
||||||
r#try!(Ok("foo"));
|
Ok("foo")?;
|
||||||
} else {
|
} else {
|
||||||
//~ ERROR same body as `if` block
|
//~ ERROR same body as `if` block
|
||||||
r#try!(Ok("foo"));
|
Ok("foo")?;
|
||||||
}
|
}
|
||||||
|
|
||||||
if true {
|
if true {
|
||||||
|
@ -197,7 +197,7 @@ error: this `if` has identical blocks
|
|||||||
LL | } else {
|
LL | } else {
|
||||||
| ____________^
|
| ____________^
|
||||||
LL | | //~ ERROR same body as `if` block
|
LL | | //~ ERROR same body as `if` block
|
||||||
LL | | r#try!(Ok("foo"));
|
LL | | Ok("foo")?;
|
||||||
LL | | }
|
LL | | }
|
||||||
| |_____^
|
| |_____^
|
||||||
|
|
|
|
||||||
@ -206,7 +206,7 @@ note: same as this
|
|||||||
|
|
|
|
||||||
LL | if true {
|
LL | if true {
|
||||||
| _____________^
|
| _____________^
|
||||||
LL | | r#try!(Ok("foo"));
|
LL | | Ok("foo")?;
|
||||||
LL | | } else {
|
LL | | } else {
|
||||||
| |_____^
|
| |_____^
|
||||||
|
|
||||||
|
@ -19,5 +19,5 @@ fn main() {
|
|||||||
#[allow(clippy::needless_return)]
|
#[allow(clippy::needless_return)]
|
||||||
(|| return 2)();
|
(|| return 2)();
|
||||||
(|| -> Option<i32> { None? })();
|
(|| -> Option<i32> { None? })();
|
||||||
(|| -> Result<i32, i32> { r#try!(Err(2)) })();
|
(|| -> Result<i32, i32> { Err(2)? })();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#![warn(clippy::all)]
|
#![warn(clippy::all)]
|
||||||
#![allow(clippy::blacklisted_name, unused_assignments)]
|
#![allow(clippy::blacklisted_name, clippy::no_effect, redundant_semicolon, unused_assignments)]
|
||||||
|
|
||||||
struct Foo(u32);
|
struct Foo(u32);
|
||||||
|
|
||||||
|
@ -3,13 +3,6 @@
|
|||||||
|
|
||||||
use std::io;
|
use std::io;
|
||||||
|
|
||||||
fn try_macro<T: io::Read + io::Write>(s: &mut T) -> io::Result<()> {
|
|
||||||
r#try!(s.write(b"test"));
|
|
||||||
let mut buf = [0u8; 4];
|
|
||||||
r#try!(s.read(&mut buf));
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn question_mark<T: io::Read + io::Write>(s: &mut T) -> io::Result<()> {
|
fn question_mark<T: io::Read + io::Write>(s: &mut T) -> io::Result<()> {
|
||||||
s.write(b"test")?;
|
s.write(b"test")?;
|
||||||
let mut buf = [0u8; 4];
|
let mut buf = [0u8; 4];
|
||||||
|
@ -1,43 +1,28 @@
|
|||||||
error: handle written amount returned or use `Write::write_all` instead
|
error: handle written amount returned or use `Write::write_all` instead
|
||||||
--> $DIR/unused_io_amount.rs:7:5
|
--> $DIR/unused_io_amount.rs:7:5
|
||||||
|
|
|
|
||||||
LL | r#try!(s.write(b"test"));
|
LL | s.write(b"test")?;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: `-D clippy::unused-io-amount` implied by `-D warnings`
|
= note: `-D clippy::unused-io-amount` implied by `-D warnings`
|
||||||
= note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
|
|
||||||
|
|
||||||
error: handle read amount returned or use `Read::read_exact` instead
|
error: handle read amount returned or use `Read::read_exact` instead
|
||||||
--> $DIR/unused_io_amount.rs:9:5
|
--> $DIR/unused_io_amount.rs:9:5
|
||||||
|
|
|
|
||||||
LL | r#try!(s.read(&mut buf));
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
|
||||||
= note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
|
|
||||||
|
|
||||||
error: handle written amount returned or use `Write::write_all` instead
|
|
||||||
--> $DIR/unused_io_amount.rs:14:5
|
|
||||||
|
|
|
||||||
LL | s.write(b"test")?;
|
|
||||||
| ^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
error: handle read amount returned or use `Read::read_exact` instead
|
|
||||||
--> $DIR/unused_io_amount.rs:16:5
|
|
||||||
|
|
|
||||||
LL | s.read(&mut buf)?;
|
LL | s.read(&mut buf)?;
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: handle written amount returned or use `Write::write_all` instead
|
error: handle written amount returned or use `Write::write_all` instead
|
||||||
--> $DIR/unused_io_amount.rs:21:5
|
--> $DIR/unused_io_amount.rs:14:5
|
||||||
|
|
|
|
||||||
LL | s.write(b"test").unwrap();
|
LL | s.write(b"test").unwrap();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: handle read amount returned or use `Read::read_exact` instead
|
error: handle read amount returned or use `Read::read_exact` instead
|
||||||
--> $DIR/unused_io_amount.rs:23:5
|
--> $DIR/unused_io_amount.rs:16:5
|
||||||
|
|
|
|
||||||
LL | s.read(&mut buf).unwrap();
|
LL | s.read(&mut buf).unwrap();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: aborting due to 6 previous errors
|
error: aborting due to 4 previous errors
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user