From 407ff74dcc6223185f57a675843bc95cbc66d5a2 Mon Sep 17 00:00:00 2001 From: Wilco Kusee Date: Fri, 4 Jan 2019 11:31:28 +0100 Subject: [PATCH] Trigger `use_self` lint in local macros --- clippy_lints/src/use_self.rs | 6 +++--- tests/ui/use_self.rs | 16 ++++++++++++++++ tests/ui/use_self.stderr | 20 +++++++++++++++++++- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/clippy_lints/src/use_self.rs b/clippy_lints/src/use_self.rs index b031e8b1c444..aa4302e12a74 100644 --- a/clippy_lints/src/use_self.rs +++ b/clippy_lints/src/use_self.rs @@ -7,12 +7,12 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use crate::utils::{in_macro, span_lint_and_sugg}; +use crate::utils::span_lint_and_sugg; use if_chain::if_chain; use rustc::hir::def::{CtorKind, Def}; use rustc::hir::intravisit::{walk_path, walk_ty, NestedVisitorMap, Visitor}; use rustc::hir::*; -use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass}; +use rustc::lint::{in_external_macro, LateContext, LateLintPass, LintArray, LintContext, LintPass}; use rustc::ty; use rustc::{declare_tool_lint, lint_array}; use rustc_errors::Applicability; @@ -172,7 +172,7 @@ fn check_trait_method_impl_decl<'a, 'tcx: 'a>( impl<'a, 'tcx> LateLintPass<'a, 'tcx> for UseSelf { fn check_item(&mut self, cx: &LateContext<'a, 'tcx>, item: &'tcx Item) { - if in_macro(item.span) { + if in_external_macro(cx.sess(), item.span) { return; } if_chain! { diff --git a/tests/ui/use_self.rs b/tests/ui/use_self.rs index b201e160ebd9..a01cb3e7021d 100644 --- a/tests/ui/use_self.rs +++ b/tests/ui/use_self.rs @@ -226,6 +226,22 @@ mod tuple_structs { } } +mod macros { + macro_rules! use_self_expand { + () => { + fn new() -> Foo { + Foo {} + } + }; + } + + struct Foo {} + + impl Foo { + use_self_expand!(); // Should lint in local macros + } +} + mod issue3410 { struct A; diff --git a/tests/ui/use_self.stderr b/tests/ui/use_self.stderr index d52fce76de59..6c5dbf9111d6 100644 --- a/tests/ui/use_self.stderr +++ b/tests/ui/use_self.stderr @@ -132,5 +132,23 @@ error: unnecessary structure name repetition LL | TS(0) | ^^ help: use the applicable keyword: `Self` -error: aborting due to 22 previous errors +error: unnecessary structure name repetition + --> $DIR/use_self.rs:232:25 + | +LL | fn new() -> Foo { + | ^^^ help: use the applicable keyword: `Self` +... +LL | use_self_expand!(); // Should lint in local macros + | ------------------- in this macro invocation + +error: unnecessary structure name repetition + --> $DIR/use_self.rs:233:17 + | +LL | Foo {} + | ^^^ help: use the applicable keyword: `Self` +... +LL | use_self_expand!(); // Should lint in local macros + | ------------------- in this macro invocation + +error: aborting due to 24 previous errors