From 10f468e679c0e6a6c6dc0e94431f3d63bf3e33e0 Mon Sep 17 00:00:00 2001 From: Oliver Schneider Date: Mon, 2 May 2016 10:52:55 +0200 Subject: [PATCH] don't lint similar_names inside #[test] functions --- src/non_expressive_names.rs | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/non_expressive_names.rs b/src/non_expressive_names.rs index a6f0571c4..c1232fe64 100644 --- a/src/non_expressive_names.rs +++ b/src/non_expressive_names.rs @@ -2,7 +2,8 @@ use rustc::lint::*; use syntax::codemap::Span; use syntax::parse::token::InternedString; use syntax::ast::*; -use syntax::visit::{self, FnKind}; +use syntax::attr; +use syntax::visit; use utils::{span_lint_and_then, in_macro, span_lint}; /// **What it does:** This lint warns about names that are very similar and thus confusing @@ -237,24 +238,28 @@ impl<'v, 'a, 'b> visit::Visitor<'v> for SimilarNamesLocalVisitor<'a, 'b> { }); } fn visit_item(&mut self, _: &'v Item) { - // do nothing + // do not recurse into inner items } } impl EarlyLintPass for NonExpressiveNames { - fn check_fn(&mut self, cx: &EarlyContext, _: FnKind, decl: &FnDecl, blk: &Block, _: Span, _: NodeId) { - let mut visitor = SimilarNamesLocalVisitor { - names: Vec::new(), - cx: cx, - lint: &self, - single_char_names: Vec::new(), - }; - // initialize with function arguments - for arg in &decl.inputs { - visit::walk_pat(&mut SimilarNamesNameVisitor(&mut visitor), &arg.pat); + fn check_item(&mut self, cx: &EarlyContext, item: &Item) { + if let ItemKind::Fn(ref decl, _, _, _, _, ref blk) = item.node { + if !attr::contains_name(&item.attrs, "test") { + let mut visitor = SimilarNamesLocalVisitor { + names: Vec::new(), + cx: cx, + lint: &self, + single_char_names: Vec::new(), + }; + // initialize with function arguments + for arg in &decl.inputs { + visit::walk_pat(&mut SimilarNamesNameVisitor(&mut visitor), &arg.pat); + } + // walk all other bindings + visit::walk_block(&mut visitor, blk); + } } - // walk all other bindings - visit::walk_block(&mut visitor, blk); } }