X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=clippy_lints%2Fsrc%2Fdbg_macro.rs;h=48fc601e726cf6ef35c86b8192c3708731b8f2cc;hb=6d1225981177587fbb68d9c4902c770c3dbaafb0;hp=ae551a0792d73d5c8101779abcd87d9e11425105;hpb=4b736ff29b2a8d8915e56bc880ab024292a3ac48;p=rust.git diff --git a/clippy_lints/src/dbg_macro.rs b/clippy_lints/src/dbg_macro.rs index ae551a0792d..48fc601e726 100644 --- a/clippy_lints/src/dbg_macro.rs +++ b/clippy_lints/src/dbg_macro.rs @@ -1,53 +1,43 @@ -use crate::utils::{span_help_and_lint, span_lint_and_sugg, snippet_opt}; +use crate::utils::{snippet_opt, span_help_and_lint, span_lint_and_sugg}; +use rustc::declare_lint_pass; use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass}; -use rustc::{declare_tool_lint, lint_array}; -use syntax::ast; use rustc_errors::Applicability; -use syntax::tokenstream::TokenStream; +use rustc_session::declare_tool_lint; +use syntax::ast; use syntax::source_map::Span; +use syntax::tokenstream::TokenStream; -/// **What it does:** Checks for usage of dbg!() macro. -/// -/// **Why is this bad?** `dbg!` macro is intended as a debugging tool. It -/// should not be in version control. -/// -/// **Known problems:** None. -/// -/// **Example:** -/// ```rust,ignore -/// // Bad -/// dbg!(true) -/// -/// // Good -/// true -/// ``` declare_clippy_lint! { + /// **What it does:** Checks for usage of dbg!() macro. + /// + /// **Why is this bad?** `dbg!` macro is intended as a debugging tool. It + /// should not be in version control. + /// + /// **Known problems:** None. + /// + /// **Example:** + /// ```rust,ignore + /// // Bad + /// dbg!(true) + /// + /// // Good + /// true + /// ``` pub DBG_MACRO, restriction, "`dbg!` macro is intended as a debugging tool" } -#[derive(Copy, Clone, Debug)] -pub struct Pass; - -impl LintPass for Pass { - fn get_lints(&self) -> LintArray { - lint_array!(DBG_MACRO) - } - - fn name(&self) -> &'static str { - "DbgMacro" - } -} +declare_lint_pass!(DbgMacro => [DBG_MACRO]); -impl EarlyLintPass for Pass { +impl EarlyLintPass for DbgMacro { fn check_mac(&mut self, cx: &EarlyContext<'_>, mac: &ast::Mac) { - if mac.node.path == "dbg" { - if let Some(sugg) = tts_span(mac.node.tts.clone()).and_then(|span| snippet_opt(cx, span)) { + if mac.path == sym!(dbg) { + if let Some(sugg) = tts_span(mac.args.inner_tokens()).and_then(|span| snippet_opt(cx, span)) { span_lint_and_sugg( cx, DBG_MACRO, - mac.span, + mac.span(), "`dbg!` macro is intended as a debugging tool", "ensure to avoid having uses of it in version control", sugg, @@ -57,7 +47,7 @@ fn check_mac(&mut self, cx: &EarlyContext<'_>, mac: &ast::Mac) { span_help_and_lint( cx, DBG_MACRO, - mac.span, + mac.span(), "`dbg!` macro is intended as a debugging tool", "ensure to avoid having uses of it in version control", ); @@ -70,9 +60,6 @@ fn check_mac(&mut self, cx: &EarlyContext<'_>, mac: &ast::Mac) { fn tts_span(tts: TokenStream) -> Option { let mut cursor = tts.into_trees(); let first = cursor.next()?.span(); - let span = match cursor.last() { - Some(tree) => first.to(tree.span()), - None => first, - }; + let span = cursor.last().map_or(first, |tree| first.to(tree.span())); Some(span) }