mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-16 17:58:14 +00:00
Merge pull request #1173 from oli-obk/never_rustup
rustup for the ! type
This commit is contained in:
commit
4c07c0af57
8 changed files with 15 additions and 17 deletions
|
@ -1,14 +1,17 @@
|
|||
# Change Log
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## 0.0.83 — TBD
|
||||
## 0.0.84 — TBD
|
||||
|
||||
## 0.0.83 — 2016-08-17
|
||||
* Rustup to *rustc 1.12.0-nightly (1bf5fa326 2016-08-16)*
|
||||
* New lints: [`print_with_newline`], [`useless_attribute`]
|
||||
|
||||
## 0.0.82 — 2016-08-17
|
||||
* Rustup to *rustc 1.12.0-nightly (197be89f3 2016-08-15)*
|
||||
* New lint: [`module_inception`]
|
||||
|
||||
## 0.0.81 - 2016-08-14
|
||||
## 0.0.81 — 2016-08-14
|
||||
* Rustup to *rustc 1.12.0-nightly (1deb02ea6 2016-08-12)*
|
||||
* New lints: [`eval_order_dependence`], [`mixed_case_hex_literals`], [`unseparated_literal_suffix`]
|
||||
* False positive fix in [`too_many_arguments`]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "clippy"
|
||||
version = "0.0.82"
|
||||
version = "0.0.83"
|
||||
authors = [
|
||||
"Manish Goregaokar <manishsmail@gmail.com>",
|
||||
"Andre Bogus <bogusandre@gmail.com>",
|
||||
|
@ -25,7 +25,7 @@ test = false
|
|||
|
||||
[dependencies]
|
||||
# begin automatic update
|
||||
clippy_lints = { version = "0.0.82", path = "clippy_lints" }
|
||||
clippy_lints = { version = "0.0.83", path = "clippy_lints" }
|
||||
# end automatic update
|
||||
|
||||
[dev-dependencies]
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[package]
|
||||
name = "clippy_lints"
|
||||
# begin automatic update
|
||||
version = "0.0.82"
|
||||
version = "0.0.83"
|
||||
# end automatic update
|
||||
authors = [
|
||||
"Manish Goregaokar <manishsmail@gmail.com>",
|
||||
|
|
|
@ -142,7 +142,7 @@ impl<'a, 'b, 'tcx, 'gcx> Visitor<'a> for CCHelper<'b, 'gcx, 'tcx> {
|
|||
let ty = self.tcx.node_id_to_type(callee.id);
|
||||
match ty.sty {
|
||||
ty::TyFnDef(_, _, ty) |
|
||||
ty::TyFnPtr(ty) if ty.sig.skip_binder().output.diverges() => {
|
||||
ty::TyFnPtr(ty) if ty.sig.skip_binder().output.sty == ty::TyNever => {
|
||||
self.divergence += 1;
|
||||
}
|
||||
_ => (),
|
||||
|
|
|
@ -71,7 +71,7 @@ fn check_closure(cx: &LateContext, expr: &Expr) {
|
|||
ty::TyFnDef(_, _, fn_ty) |
|
||||
ty::TyFnPtr(fn_ty) => {
|
||||
if fn_ty.unsafety == Unsafety::Unsafe ||
|
||||
fn_ty.sig.skip_binder().output == ty::FnOutput::FnDiverging {
|
||||
fn_ty.sig.skip_binder().output.sty == ty::TyNever {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -590,7 +590,7 @@ impl LateLintPass for Pass {
|
|||
|
||||
let ret_ty = return_ty(cx, implitem.id);
|
||||
if &name.as_str() == &"new" &&
|
||||
!ret_ty.map_or(false, |ret_ty| ret_ty.walk().any(|t| same_tys(cx, t, ty, implitem.id))) {
|
||||
!ret_ty.walk().any(|t| same_tys(cx, t, ty, implitem.id)) {
|
||||
span_lint(cx,
|
||||
NEW_RET_NO_SELF,
|
||||
explicit_self.span,
|
||||
|
|
|
@ -106,8 +106,7 @@ impl LateLintPass for NewWithoutDefault {
|
|||
.ty;
|
||||
if_let_chain!{[
|
||||
self_ty.walk_shallow().next().is_none(), // implements_trait does not work with generics
|
||||
let Some(ret_ty) = return_ty(cx, id),
|
||||
same_tys(cx, self_ty, ret_ty, id),
|
||||
same_tys(cx, self_ty, return_ty(cx, id), id),
|
||||
let Some(default_trait_id) = get_trait_def_id(cx, &paths::DEFAULT_TRAIT),
|
||||
!implements_trait(cx, self_ty, default_trait_id, Vec::new())
|
||||
], {
|
||||
|
|
|
@ -692,16 +692,12 @@ pub fn camel_case_from(s: &str) -> usize {
|
|||
last_i
|
||||
}
|
||||
|
||||
/// Convenience function to get the return type of a function or `None` if the function diverges.
|
||||
pub fn return_ty<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, fn_item: NodeId) -> Option<ty::Ty<'tcx>> {
|
||||
/// Convenience function to get the return type of a function
|
||||
pub fn return_ty<'a, 'tcx>(cx: &LateContext<'a, 'tcx>, fn_item: NodeId) -> ty::Ty<'tcx> {
|
||||
let parameter_env = ty::ParameterEnvironment::for_item(cx.tcx, fn_item);
|
||||
let fn_sig = cx.tcx.node_id_to_type(fn_item).fn_sig().subst(cx.tcx, parameter_env.free_substs);
|
||||
let fn_sig = cx.tcx.liberate_late_bound_regions(parameter_env.free_id_outlive, &fn_sig);
|
||||
if let ty::FnConverging(ret_ty) = fn_sig.output {
|
||||
Some(ret_ty)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
fn_sig.output
|
||||
}
|
||||
|
||||
/// Check if two types are the same.
|
||||
|
|
Loading…
Reference in a new issue