Skip to content

Commit

Permalink
Skip late-bound lifetimes when crossing an AnonConst.
Browse files Browse the repository at this point in the history
  • Loading branch information
cjgillot committed Nov 1, 2024
1 parent 45d4465 commit a7f6095
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions compiler/rustc_hir_analysis/src/collect/resolve_bound_vars.rs
Original file line number Diff line number Diff line change
Expand Up @@ -573,11 +573,17 @@ impl<'a, 'tcx> Visitor<'tcx> for BoundVarContext<'a, 'tcx> {
// give, we will reverse the IndexMap after early captures.
let mut late_depth = 0;
let mut scope = self.scope;
let mut crossed_late_boundary = None;
let mut opaque_capture_scopes = vec![(opaque.def_id, &captures)];
loop {
match *scope {
Scope::Binder { ref bound_vars, scope_type, s, .. } => {
for (&original_lifetime, &def) in bound_vars.iter().rev() {
if let ResolvedArg::LateBound(..) = def
&& crossed_late_boundary.is_some()
{
continue;
}
if let DefKind::LifetimeParam = self.tcx.def_kind(original_lifetime) {
let def = def.shifted(late_depth);
let ident = lifetime_ident(original_lifetime);
Expand Down Expand Up @@ -618,8 +624,12 @@ impl<'a, 'tcx> Visitor<'tcx> for BoundVarContext<'a, 'tcx> {

Scope::ObjectLifetimeDefault { s, .. }
| Scope::Supertrait { s, .. }
| Scope::TraitRefBoundary { s, .. }
| Scope::LateBoundary { s, .. } => {
| Scope::TraitRefBoundary { s, .. } => {
scope = s;
}

Scope::LateBoundary { s, what, .. } => {
crossed_late_boundary = Some(what);
scope = s;
}
}
Expand Down

0 comments on commit a7f6095

Please sign in to comment.