X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=clippy_lints%2Fsrc%2Funsafe_removed_from_name.rs;h=58af6e9d28146491235055263dd67176c6093937;hb=e5a5b0a0774625eebbe7b29c67b49dc6431544d1;hp=753ee40be7fa496d31d0a1200bc1f09074b6596c;hpb=73e8416df3fbc2872738911cdfa83662f4a2fcf8;p=rust.git diff --git a/clippy_lints/src/unsafe_removed_from_name.rs b/clippy_lints/src/unsafe_removed_from_name.rs index 753ee40be7f..58af6e9d281 100644 --- a/clippy_lints/src/unsafe_removed_from_name.rs +++ b/clippy_lints/src/unsafe_removed_from_name.rs @@ -1,42 +1,37 @@ +use crate::utils::span_lint; +use rustc::declare_lint_pass; use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass}; -use rustc::{declare_lint, lint_array}; +use rustc_session::declare_tool_lint; use syntax::ast::*; use syntax::source_map::Span; -use syntax::symbol::LocalInternedString; -use crate::utils::span_lint; +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 { + if let ItemKind::Use(ref use_tree) = item.kind { check_use_tree(use_tree, cx, item.span); } } @@ -52,14 +47,13 @@ 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); } - } + }, } } @@ -71,11 +65,15 @@ fn unsafe_to_safe_check(old_name: Ident, new_name: Ident, cx: &EarlyContext<'_>, cx, UNSAFE_REMOVED_FROM_NAME, span, - &format!("removed \"unsafe\" from the name of `{}` in use as `{}`", old_str, new_str), + &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") }