Skip to content

Commit

Permalink
Auto merge of #9454 - kraktus:use_self, r=flip1995
Browse files Browse the repository at this point in the history
Do not lint `use_self` in proc macro expansion

fix #9440
fix #8910
fix #6902

changelog: [`use_self`]: Do not lint in proc macro expansion
  • Loading branch information
bors committed Sep 13, 2022
2 parents d574216 + 59ee6a8 commit 2e55b42
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
8 changes: 3 additions & 5 deletions clippy_lints/src/use_self.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use clippy_utils::diagnostics::span_lint_and_sugg;
use clippy_utils::ty::same_type_and_consts;
use clippy_utils::{meets_msrv, msrvs};
use clippy_utils::{is_from_proc_macro, meets_msrv, msrvs};
use if_chain::if_chain;
use rustc_data_structures::fx::FxHashSet;
use rustc_errors::Applicability;
Expand Down Expand Up @@ -87,7 +87,7 @@ impl_lint_pass!(UseSelf => [USE_SELF]);
const SEGMENTS_MSG: &str = "segments should be composed of at least 1 element";

impl<'tcx> LateLintPass<'tcx> for UseSelf {
fn check_item(&mut self, _cx: &LateContext<'_>, item: &Item<'_>) {
fn check_item(&mut self, cx: &LateContext<'tcx>, item: &Item<'tcx>) {
if matches!(item.kind, ItemKind::OpaqueTy(_)) {
// skip over `ItemKind::OpaqueTy` in order to lint `foo() -> impl <..>`
return;
Expand All @@ -103,6 +103,7 @@ impl<'tcx> LateLintPass<'tcx> for UseSelf {
if parameters.as_ref().map_or(true, |params| {
!params.parenthesized && !params.args.iter().any(|arg| matches!(arg, GenericArg::Lifetime(_)))
});
if !is_from_proc_macro(cx, item); // expensive, should be last check
then {
StackItem::Check {
impl_id: item.def_id,
Expand Down Expand Up @@ -213,9 +214,6 @@ impl<'tcx> LateLintPass<'tcx> for UseSelf {
hir_ty_to_ty(cx.tcx, hir_ty)
};
if same_type_and_consts(ty, cx.tcx.type_of(impl_id));
let hir = cx.tcx.hir();
// prevents false positive on `#[derive(serde::Deserialize)]`
if !hir.span(hir.get_parent_node(hir_ty.hir_id)).in_derive_expansion();
then {
span_lint(cx, hir_ty.span);
}
Expand Down
9 changes: 9 additions & 0 deletions tests/ui/use_self.fixed
Original file line number Diff line number Diff line change
Expand Up @@ -608,3 +608,12 @@ mod issue8845 {
}
}
}

mod issue6902 {
use serde::Serialize;

#[derive(Serialize)]
pub enum Foo {
Bar = 1,
}
}
9 changes: 9 additions & 0 deletions tests/ui/use_self.rs
Original file line number Diff line number Diff line change
Expand Up @@ -608,3 +608,12 @@ mod issue8845 {
}
}
}

mod issue6902 {
use serde::Serialize;

#[derive(Serialize)]
pub enum Foo {
Bar = 1,
}
}

0 comments on commit 2e55b42

Please sign in to comment.