mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-18 02:38:28 +00:00
less false positives for approx_const and float_cmp
This commit is contained in:
parent
aefad45ee7
commit
681bce925f
2 changed files with 10 additions and 2 deletions
|
@ -1,8 +1,9 @@
|
|||
use rustc::lint::*;
|
||||
use rustc::metadata::cstore::crate_metadata;
|
||||
use rustc_front::hir::*;
|
||||
use syntax::codemap::Span;
|
||||
use std::borrow::Borrow;
|
||||
use std::f64::consts as f64;
|
||||
|
||||
use utils::span_lint;
|
||||
|
||||
declare_lint! {
|
||||
|
@ -31,6 +32,13 @@ impl LintPass for ApproxConstant {
|
|||
|
||||
fn check_expr(&mut self, cx: &Context, e: &Expr) {
|
||||
if let &ExprLit(ref lit) = &e.node {
|
||||
if let Some(res) = cx.tcx.def_map.borrow().get(&e.id) {
|
||||
let krate = res.def_id().krate;
|
||||
let cdata = &cx.sess().cstore.get_crate_data(krate);
|
||||
let crate_data : &crate_metadata = cdata.borrow();
|
||||
let name = &crate_data.name;
|
||||
if name == "f32" || name == "f64" { return; }
|
||||
}
|
||||
check_lit(cx, lit, e.span);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -93,7 +93,7 @@ impl LintPass for FloatCmp {
|
|||
return;
|
||||
}
|
||||
if let Some(name) = get_item_name(cx, expr) {
|
||||
if name == "eq" || name == "ne" ||
|
||||
if name == "eq" || name == "ne" || name == "is_nan" ||
|
||||
name.as_str().starts_with("eq_") ||
|
||||
name.as_str().ends_with("_eq") {
|
||||
return;
|
||||
|
|
Loading…
Reference in a new issue