diff --git a/clippy_lints/src/attrs/deprecated_cfg_attr.rs b/clippy_lints/src/attrs/deprecated_cfg_attr.rs index d67a194b0206..ea5da3726144 100644 --- a/clippy_lints/src/attrs/deprecated_cfg_attr.rs +++ b/clippy_lints/src/attrs/deprecated_cfg_attr.rs @@ -2,7 +2,7 @@ use super::{Attribute, DEPRECATED_CFG_ATTR, DEPRECATED_CLIPPY_CFG_ATTR, unnecess use clippy_utils::diagnostics::span_lint_and_sugg; use clippy_utils::msrvs::{self, MsrvStack}; use clippy_utils::sym; -use rustc_ast::AttrStyle; +use rustc_ast::{AttrStyle, MetaItemInner}; use rustc_errors::Applicability; use rustc_lint::EarlyContext; @@ -53,7 +53,7 @@ pub(super) fn check_clippy(cx: &EarlyContext<'_>, attr: &Attribute) { if attr.has_name(sym::cfg) && let Some(list) = attr.meta_item_list() { - for item in list.iter().filter_map(|item| item.meta_item()) { + for item in list.iter().filter_map(MetaItemInner::meta_item) { check_deprecated_cfg_recursively(cx, item); } } @@ -63,7 +63,7 @@ fn check_deprecated_cfg_recursively(cx: &EarlyContext<'_>, attr: &rustc_ast::Met if let Some(ident) = attr.ident() { if matches!(ident.name, sym::any | sym::all | sym::not) { let Some(list) = attr.meta_item_list() else { return }; - for item in list.iter().filter_map(|item| item.meta_item()) { + for item in list.iter().filter_map(MetaItemInner::meta_item) { check_deprecated_cfg_recursively(cx, item); } } else { diff --git a/clippy_lints/src/definition_in_module_root.rs b/clippy_lints/src/definition_in_module_root.rs index 4b454e282cc2..fd5b3dc9c88d 100644 --- a/clippy_lints/src/definition_in_module_root.rs +++ b/clippy_lints/src/definition_in_module_root.rs @@ -3,6 +3,7 @@ use rustc_ast::ast::{self, Inline, ItemKind, ModKind}; use rustc_lint::{EarlyContext, EarlyLintPass, LintContext as _}; use rustc_session::impl_lint_pass; use rustc_span::{FileName, SourceFile, sym}; +use std::path::Path; declare_clippy_lint! { /// ### What it does @@ -153,7 +154,7 @@ fn has_macro_export(item: &ast::Item) -> bool { fn is_mod_rs(file: &SourceFile) -> bool { if let FileName::Real(name) = &file.name { name.local_path() - .and_then(|p| p.file_name()) + .and_then(Path::file_name) .is_some_and(|n| n == "mod.rs") } else { false diff --git a/clippy_lints/src/eta_reduction.rs b/clippy_lints/src/eta_reduction.rs index 663dde0769cd..41ff8b9d9880 100644 --- a/clippy_lints/src/eta_reduction.rs +++ b/clippy_lints/src/eta_reduction.rs @@ -334,7 +334,7 @@ fn has_late_bound_to_non_late_bound_regions(from_sig: FnSig<'_>, to_sig: FnSig<' if from_subs.len() != to_subs.len() { return true; } - for (from_arg, to_arg) in to_subs.iter().zip(from_subs) { + for (from_arg, to_arg) in from_subs.iter().zip(to_subs) { match (from_arg.kind(), to_arg.kind()) { (GenericArgKind::Lifetime(from_region), GenericArgKind::Lifetime(to_region)) => { if check_region(from_region, to_region) { diff --git a/clippy_lints/src/loops/infinite_loop.rs b/clippy_lints/src/loops/infinite_loop.rs index 404ff33838b1..455fb0005d5e 100644 --- a/clippy_lints/src/loops/infinite_loop.rs +++ b/clippy_lints/src/loops/infinite_loop.rs @@ -219,7 +219,7 @@ fn is_never_return(ret_ty: FnRetTy<'_>) -> bool { bounds, .. }) => { - if let Some(trait_ref) = bounds.iter().find_map(|b| b.trait_ref()) + if let Some(trait_ref) = bounds.iter().find_map(hir::GenericBound::trait_ref) && let Some(segment) = trait_ref .path .segments diff --git a/tests/ui/eta.fixed b/tests/ui/eta.fixed index 20405a1233c4..ae54b8100434 100644 --- a/tests/ui/eta.fixed +++ b/tests/ui/eta.fixed @@ -687,3 +687,24 @@ mod issue_13094 { .collect() } } + +// https://github.com/rust-lang/rust-clippy/issues/14215 +fn early_bound_region_in_adt() { + use std::marker::PhantomData; + + struct Guard<'a, S> { + _data: PhantomData<&'a S>, + } + + impl Guard<'_, S> { + fn do_something(_this: &mut Self) {} + } + + fn takes_guard_fn(_func: F) + where + F: FnOnce(&mut Guard), + { + } + + takes_guard_fn::(|s| Guard::do_something(s)); +} diff --git a/tests/ui/eta.rs b/tests/ui/eta.rs index 4268810635fb..4cfbf491dcb2 100644 --- a/tests/ui/eta.rs +++ b/tests/ui/eta.rs @@ -687,3 +687,24 @@ mod issue_13094 { .collect() } } + +// https://github.com/rust-lang/rust-clippy/issues/14215 +fn early_bound_region_in_adt() { + use std::marker::PhantomData; + + struct Guard<'a, S> { + _data: PhantomData<&'a S>, + } + + impl Guard<'_, S> { + fn do_something(_this: &mut Self) {} + } + + fn takes_guard_fn(_func: F) + where + F: FnOnce(&mut Guard), + { + } + + takes_guard_fn::(|s| Guard::do_something(s)); +}