X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=clippy_lints%2Fsrc%2Funsafe_removed_from_name.rs;h=58af6e9d28146491235055263dd67176c6093937;hb=e5a5b0a0774625eebbe7b29c67b49dc6431544d1;hp=ff460e50d8c0486af57f00ea1f6e945ec338a312;hpb=1712e18b775cb1618c17c9b029d0493c59929ce3;p=rust.git diff --git a/clippy_lints/src/unsafe_removed_from_name.rs b/clippy_lints/src/unsafe_removed_from_name.rs index ff460e50d8c..58af6e9d281 100644 --- a/clippy_lints/src/unsafe_removed_from_name.rs +++ b/clippy_lints/src/unsafe_removed_from_name.rs @@ -1,49 +1,45 @@ -use rustc::lint::*; +use crate::utils::span_lint; +use rustc::declare_lint_pass; +use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass}; +use rustc_session::declare_tool_lint; use syntax::ast::*; -use syntax::codemap::Span; -use syntax::symbol::LocalInternedString; -use utils::span_lint; +use syntax::source_map::Span; +use syntax::symbol::SymbolStr; -/// **What it does:** Checks for imports that remove "unsafe" from an item's -/// name. -/// -/// **Why is this bad?** Renaming makes it less clear which traits and -/// structures are unsafe. -/// -/// **Known problems:** None. -/// -/// **Example:** -/// ```rust,ignore -/// use std::cell::{UnsafeCell as TotallySafeCell}; -/// -/// extern crate crossbeam; -/// use crossbeam::{spawn_unsafe as spawn}; -/// ``` declare_clippy_lint! { + /// **What it does:** Checks for imports that remove "unsafe" from an item's + /// name. + /// + /// **Why is this bad?** Renaming makes it less clear which traits and + /// structures are unsafe. + /// + /// **Known problems:** None. + /// + /// **Example:** + /// ```rust,ignore + /// use std::cell::{UnsafeCell as TotallySafeCell}; + /// + /// extern crate crossbeam; + /// use crossbeam::{spawn_unsafe as spawn}; + /// ``` pub UNSAFE_REMOVED_FROM_NAME, style, "`unsafe` removed from API names on import" } -pub struct UnsafeNameRemoval; - -impl LintPass for UnsafeNameRemoval { - fn get_lints(&self) -> LintArray { - lint_array!(UNSAFE_REMOVED_FROM_NAME) - } -} +declare_lint_pass!(UnsafeNameRemoval => [UNSAFE_REMOVED_FROM_NAME]); impl EarlyLintPass for UnsafeNameRemoval { - fn check_item(&mut self, cx: &EarlyContext, item: &Item) { - if let ItemKind::Use(ref use_tree) = item.node { - check_use_tree(use_tree, cx, &item.span); + fn check_item(&mut self, cx: &EarlyContext<'_>, item: &Item) { + if let ItemKind::Use(ref use_tree) = item.kind { + check_use_tree(use_tree, cx, item.span); } } } -fn check_use_tree(use_tree: &UseTree, cx: &EarlyContext, span: &Span) { +fn check_use_tree(use_tree: &UseTree, cx: &EarlyContext<'_>, span: Span) { match use_tree.kind { - UseTreeKind::Simple(Some(new_name)) => { + UseTreeKind::Simple(Some(new_name), ..) => { let old_name = use_tree .prefix .segments @@ -51,30 +47,33 @@ fn check_use_tree(use_tree: &UseTree, cx: &EarlyContext, span: &Span) { .expect("use paths cannot be empty") .ident; unsafe_to_safe_check(old_name, new_name, cx, span); - } - UseTreeKind::Simple(None) | - UseTreeKind::Glob => {}, + }, + UseTreeKind::Simple(None, ..) | UseTreeKind::Glob => {}, UseTreeKind::Nested(ref nested_use_tree) => { for &(ref use_tree, _) in nested_use_tree { check_use_tree(use_tree, cx, span); } - } + }, } } -fn unsafe_to_safe_check(old_name: Ident, new_name: Ident, cx: &EarlyContext, span: &Span) { +fn unsafe_to_safe_check(old_name: Ident, new_name: Ident, cx: &EarlyContext<'_>, span: Span) { let old_str = old_name.name.as_str(); let new_str = new_name.name.as_str(); if contains_unsafe(&old_str) && !contains_unsafe(&new_str) { span_lint( cx, UNSAFE_REMOVED_FROM_NAME, - *span, - &format!("removed \"unsafe\" from the name of `{}` in use as `{}`", old_str, new_str), + span, + &format!( + "removed \"unsafe\" from the name of `{}` in use as `{}`", + old_str, new_str + ), ); } } -fn contains_unsafe(name: &LocalInternedString) -> bool { +#[must_use] +fn contains_unsafe(name: &SymbolStr) -> bool { name.contains("Unsafe") || name.contains("unsafe") }