X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=clippy_lints%2Fsrc%2Funused_label.rs;h=5c5550ed30fb2e675a3059f6b1d13e941a11ea37;hb=48cb6e273ea49e85b6baa209e0123a2bbd6d15c2;hp=9017fd6933e81b04f6e66bad4b7aa04217947ceb;hpb=47eead5ada97f50af5e00426bc08f1dcbeb5d4d2;p=rust.git diff --git a/clippy_lints/src/unused_label.rs b/clippy_lints/src/unused_label.rs index 9017fd6933e..5c5550ed30f 100644 --- a/clippy_lints/src/unused_label.rs +++ b/clippy_lints/src/unused_label.rs @@ -1,11 +1,11 @@ use rustc::lint::*; use rustc::hir; -use rustc::hir::intravisit::{FnKind, Visitor, walk_expr, walk_fn, NestedVisitorMap}; +use rustc::hir::intravisit::{walk_expr, walk_fn, FnKind, NestedVisitorMap, Visitor}; use std::collections::HashMap; use syntax::ast; use syntax::codemap::Span; -use syntax::symbol::InternedString; -use utils::{in_macro, span_lint}; +use syntax::symbol::LocalInternedString; +use crate::utils::{in_macro, span_lint}; /// **What it does:** Checks for unused labels. /// @@ -21,16 +21,16 @@ /// if i > 4 { continue } /// } /// ``` -declare_lint! { +declare_clippy_lint! { pub UNUSED_LABEL, - Warn, + complexity, "unused labels" } pub struct UnusedLabel; struct UnusedLabelVisitor<'a, 'tcx: 'a> { - labels: HashMap, + labels: HashMap, cx: &'a LateContext<'a, 'tcx>, } @@ -46,19 +46,19 @@ fn check_fn( cx: &LateContext<'a, 'tcx>, kind: FnKind<'tcx>, decl: &'tcx hir::FnDecl, - body: &'tcx hir::Expr, + body: &'tcx hir::Body, span: Span, - fn_id: ast::NodeId + fn_id: ast::NodeId, ) { - if in_macro(cx, span) { + if in_macro(span) { return; } let mut v = UnusedLabelVisitor { - cx: cx, + cx, labels: HashMap::new(), }; - walk_fn(&mut v, kind, decl, body.expr_id(), span, fn_id); + walk_fn(&mut v, kind, decl, body.id(), span, fn_id); for (label, span) in v.labels { span_lint(cx, UNUSED_LABEL, span, &format!("unused label `{}`", label)); @@ -69,13 +69,11 @@ fn check_fn( impl<'a, 'tcx: 'a> Visitor<'tcx> for UnusedLabelVisitor<'a, 'tcx> { fn visit_expr(&mut self, expr: &'tcx hir::Expr) { match expr.node { - hir::ExprBreak(Some(label), _) | - hir::ExprAgain(Some(label)) => { - self.labels.remove(&label.name.as_str()); + hir::ExprBreak(destination, _) | hir::ExprContinue(destination) => if let Some(label) = destination.label { + self.labels.remove(&label.ident.as_str()); }, - hir::ExprLoop(_, Some(label), _) | - hir::ExprWhile(_, _, Some(label)) => { - self.labels.insert(label.node.as_str(), expr.span); + hir::ExprLoop(_, Some(label), _) | hir::ExprWhile(_, _, Some(label)) => { + self.labels.insert(label.ident.as_str(), expr.span); }, _ => (), } @@ -83,6 +81,6 @@ fn visit_expr(&mut self, expr: &'tcx hir::Expr) { walk_expr(self, expr); } fn nested_visit_map<'this>(&'this mut self) -> NestedVisitorMap<'this, 'tcx> { - NestedVisitorMap::All(&self.cx.tcx.map) + NestedVisitorMap::All(&self.cx.tcx.hir) } }