Do not treat lifetimes from parent items as influencing child items

This commit is contained in:
Oli Scherer 2025-03-28 17:01:23 +00:00
parent 2a06022951
commit dabee5d563
2 changed files with 17 additions and 1 deletions

View file

@ -1833,7 +1833,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
}
LifetimeRibKind::StaticIfNoLifetimeInScope { lint_id: node_id, emit_lint } => {
let mut lifetimes_in_scope = vec![];
for rib in &self.lifetime_ribs[..i] {
for rib in self.lifetime_ribs[..i].iter().rev() {
lifetimes_in_scope.extend(rib.bindings.iter().map(|(ident, _)| ident.span));
// Consider any anonymous lifetimes, too
if let LifetimeRibKind::AnonymousCreateParameter { binder, .. } = rib.kind
@ -1841,6 +1841,9 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
{
lifetimes_in_scope.extend(extra.iter().map(|(ident, _, _)| ident.span));
}
if let LifetimeRibKind::Item = rib.kind {
break;
}
}
if lifetimes_in_scope.is_empty() {
self.record_lifetime_res(