mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-27 23:20:39 +00:00
Merge pull request #2754 from phansch/rustup20180513
Rustup to 2018-05-13
This commit is contained in:
commit
29a900d916
8 changed files with 19 additions and 16 deletions
|
@ -1,6 +1,9 @@
|
||||||
# Change Log
|
# Change Log
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
## 0.0.199
|
||||||
|
* Rustup to *rustc 1.27.0-nightly (ff2ac35db 2018-05-12)*
|
||||||
|
|
||||||
## 0.0.198
|
## 0.0.198
|
||||||
* Rustup to *rustc 1.27.0-nightly (acd3871ba 2018-05-10)*
|
* Rustup to *rustc 1.27.0-nightly (acd3871ba 2018-05-10)*
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "clippy"
|
name = "clippy"
|
||||||
version = "0.0.198"
|
version = "0.0.199"
|
||||||
authors = [
|
authors = [
|
||||||
"Manish Goregaokar <manishsmail@gmail.com>",
|
"Manish Goregaokar <manishsmail@gmail.com>",
|
||||||
"Andre Bogus <bogusandre@gmail.com>",
|
"Andre Bogus <bogusandre@gmail.com>",
|
||||||
|
@ -37,7 +37,7 @@ path = "src/driver.rs"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# begin automatic update
|
# begin automatic update
|
||||||
clippy_lints = { version = "0.0.198", path = "clippy_lints" }
|
clippy_lints = { version = "0.0.199", path = "clippy_lints" }
|
||||||
# end automatic update
|
# end automatic update
|
||||||
regex = "1"
|
regex = "1"
|
||||||
semver = "0.9"
|
semver = "0.9"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "clippy_lints"
|
name = "clippy_lints"
|
||||||
# begin automatic update
|
# begin automatic update
|
||||||
version = "0.0.198"
|
version = "0.0.199"
|
||||||
# end automatic update
|
# end automatic update
|
||||||
authors = [
|
authors = [
|
||||||
"Manish Goregaokar <manishsmail@gmail.com>",
|
"Manish Goregaokar <manishsmail@gmail.com>",
|
||||||
|
|
|
@ -61,7 +61,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for ArrayIndexing {
|
||||||
// Array with known size can be checked statically
|
// Array with known size can be checked statically
|
||||||
let ty = cx.tables.expr_ty(array);
|
let ty = cx.tables.expr_ty(array);
|
||||||
if let ty::TyArray(_, size) = ty.sty {
|
if let ty::TyArray(_, size) = ty.sty {
|
||||||
let size = size.val.to_raw_bits().unwrap();
|
let size = size.assert_usize(cx.tcx).unwrap().into();
|
||||||
|
|
||||||
// Index is a constant uint
|
// Index is a constant uint
|
||||||
if let Some((Constant::Int(const_index), _)) = constant(cx, index) {
|
if let Some((Constant::Int(const_index), _)) = constant(cx, index) {
|
||||||
|
|
|
@ -209,7 +209,7 @@ impl<'c, 'cc> ConstEvalLateContext<'c, 'cc> {
|
||||||
ExprTup(ref tup) => self.multi(tup).map(Constant::Tuple),
|
ExprTup(ref tup) => self.multi(tup).map(Constant::Tuple),
|
||||||
ExprRepeat(ref value, _) => {
|
ExprRepeat(ref value, _) => {
|
||||||
let n = match self.tables.expr_ty(e).sty {
|
let n = match self.tables.expr_ty(e).sty {
|
||||||
ty::TyArray(_, n) => n.val.to_raw_bits().expect("array length"),
|
ty::TyArray(_, n) => n.assert_usize(self.tcx).expect("array length"),
|
||||||
_ => span_bug!(e.span, "typeck error"),
|
_ => span_bug!(e.span, "typeck error"),
|
||||||
};
|
};
|
||||||
self.expr(value).map(|v| Constant::Repeat(Box::new(v), n as u64))
|
self.expr(value).map(|v| Constant::Repeat(Box::new(v), n as u64))
|
||||||
|
@ -415,9 +415,9 @@ impl<'c, 'cc> ConstEvalLateContext<'c, 'cc> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn miri_to_const<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, result: &ty::Const<'tcx>) -> Option<Constant> {
|
pub fn miri_to_const<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, result: &ty::Const<'tcx>) -> Option<Constant> {
|
||||||
use rustc::mir::interpret::{Value, PrimVal};
|
use rustc::mir::interpret::{PrimVal, ConstValue};
|
||||||
match result.val {
|
match result.val {
|
||||||
ConstVal::Value(Value::ByVal(PrimVal::Bytes(b))) => match result.ty.sty {
|
ConstVal::Value(ConstValue::ByVal(PrimVal::Bytes(b))) => match result.ty.sty {
|
||||||
ty::TyBool => Some(Constant::Bool(b == 1)),
|
ty::TyBool => Some(Constant::Bool(b == 1)),
|
||||||
ty::TyUint(_) | ty::TyInt(_) => Some(Constant::Int(b)),
|
ty::TyUint(_) | ty::TyInt(_) => Some(Constant::Int(b)),
|
||||||
ty::TyFloat(FloatTy::F32) => Some(Constant::F32(f32::from_bits(b as u32))),
|
ty::TyFloat(FloatTy::F32) => Some(Constant::F32(f32::from_bits(b as u32))),
|
||||||
|
@ -425,7 +425,7 @@ pub fn miri_to_const<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, result: &ty::Const<'
|
||||||
// FIXME: implement other conversion
|
// FIXME: implement other conversion
|
||||||
_ => None,
|
_ => None,
|
||||||
},
|
},
|
||||||
ConstVal::Value(Value::ByValPair(PrimVal::Ptr(ptr), PrimVal::Bytes(n))) => match result.ty.sty {
|
ConstVal::Value(ConstValue::ByValPair(PrimVal::Ptr(ptr), PrimVal::Bytes(n))) => match result.ty.sty {
|
||||||
ty::TyRef(_, tam, _) => match tam.sty {
|
ty::TyRef(_, tam, _) => match tam.sty {
|
||||||
ty::TyStr => {
|
ty::TyStr => {
|
||||||
let alloc = tcx
|
let alloc = tcx
|
||||||
|
|
|
@ -1223,7 +1223,7 @@ fn check_for_loop_arg(cx: &LateContext, pat: &Pat, arg: &Expr, expr: &Expr) {
|
||||||
match cx.tables.expr_ty(&args[0]).sty {
|
match cx.tables.expr_ty(&args[0]).sty {
|
||||||
// If the length is greater than 32 no traits are implemented for array and
|
// If the length is greater than 32 no traits are implemented for array and
|
||||||
// therefore we cannot use `&`.
|
// therefore we cannot use `&`.
|
||||||
ty::TypeVariants::TyArray(_, size) if size.val.to_raw_bits().expect("array size") > 32 => (),
|
ty::TypeVariants::TyArray(_, size) if size.assert_usize(cx.tcx).expect("array size") > 32 => (),
|
||||||
_ => lint_iter_method(cx, args, arg, method_name),
|
_ => lint_iter_method(cx, args, arg, method_name),
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
|
@ -1784,7 +1784,7 @@ fn is_ref_iterable_type(cx: &LateContext, e: &Expr) -> bool {
|
||||||
// no walk_ptrs_ty: calling iter() on a reference can make sense because it
|
// no walk_ptrs_ty: calling iter() on a reference can make sense because it
|
||||||
// will allow further borrows afterwards
|
// will allow further borrows afterwards
|
||||||
let ty = cx.tables.expr_ty(e);
|
let ty = cx.tables.expr_ty(e);
|
||||||
is_iterable_array(ty) ||
|
is_iterable_array(ty, cx) ||
|
||||||
match_type(cx, ty, &paths::VEC) ||
|
match_type(cx, ty, &paths::VEC) ||
|
||||||
match_type(cx, ty, &paths::LINKED_LIST) ||
|
match_type(cx, ty, &paths::LINKED_LIST) ||
|
||||||
match_type(cx, ty, &paths::HASHMAP) ||
|
match_type(cx, ty, &paths::HASHMAP) ||
|
||||||
|
@ -1795,10 +1795,10 @@ fn is_ref_iterable_type(cx: &LateContext, e: &Expr) -> bool {
|
||||||
match_type(cx, ty, &paths::BTREESET)
|
match_type(cx, ty, &paths::BTREESET)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_iterable_array(ty: Ty) -> bool {
|
fn is_iterable_array(ty: Ty, cx: &LateContext) -> bool {
|
||||||
// IntoIterator is currently only implemented for array sizes <= 32 in rustc
|
// IntoIterator is currently only implemented for array sizes <= 32 in rustc
|
||||||
match ty.sty {
|
match ty.sty {
|
||||||
ty::TyArray(_, n) => (0..=32).contains(&n.val.to_raw_bits().expect("array length")),
|
ty::TyArray(_, n) => (0..=32).contains(&n.assert_usize(cx.tcx).expect("array length")),
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1299,7 +1299,7 @@ fn derefs_to_slice(cx: &LateContext, expr: &hir::Expr, ty: Ty) -> Option<sugg::S
|
||||||
ty::TySlice(_) => true,
|
ty::TySlice(_) => true,
|
||||||
ty::TyAdt(def, _) if def.is_box() => may_slice(cx, ty.boxed_ty()),
|
ty::TyAdt(def, _) if def.is_box() => may_slice(cx, ty.boxed_ty()),
|
||||||
ty::TyAdt(..) => match_type(cx, ty, &paths::VEC),
|
ty::TyAdt(..) => match_type(cx, ty, &paths::VEC),
|
||||||
ty::TyArray(_, size) => size.val.to_raw_bits().expect("array length") < 32,
|
ty::TyArray(_, size) => size.assert_usize(cx.tcx).expect("array length") < 32,
|
||||||
ty::TyRef(_, inner, _) => may_slice(cx, inner),
|
ty::TyRef(_, inner, _) => may_slice(cx, inner),
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
rustc 1.27.0-nightly (acd3871ba 2018-05-10)
|
rustc 1.27.0-nightly (ff2ac35db 2018-05-12)
|
||||||
binary: rustc
|
binary: rustc
|
||||||
commit-hash: acd3871ba17316419c644e17547887787628ec2f
|
commit-hash: ff2ac35db93a80b2de5daa4f280bf1503d62c164
|
||||||
commit-date: 2018-05-10
|
commit-date: 2018-05-12
|
||||||
host: x86_64-unknown-linux-gnu
|
host: x86_64-unknown-linux-gnu
|
||||||
release: 1.27.0-nightly
|
release: 1.27.0-nightly
|
||||||
LLVM version: 6.0
|
LLVM version: 6.0
|
||||||
|
|
Loading…
Reference in a new issue