Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/expr_store/lower.rs')
| -rw-r--r-- | crates/hir-def/src/expr_store/lower.rs | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/crates/hir-def/src/expr_store/lower.rs b/crates/hir-def/src/expr_store/lower.rs index 6dc1d5d22c..d70ef7ac19 100644 --- a/crates/hir-def/src/expr_store/lower.rs +++ b/crates/hir-def/src/expr_store/lower.rs @@ -3479,12 +3479,17 @@ impl ExprCollector<'_> { let res = constrained_lt_indices .iter() .filter_map(|&idx| { - if let GenericArg::Lifetime(lt_ref) = generic_args.args[idx as usize] - && let LifetimeRef::Named(name) = &self.store.lifetimes[lt_ref] - { - Some(name.clone()) - } else { - None + let lt_ref = generic_args + .args + .iter() + .filter_map(|arg| match arg { + &GenericArg::Lifetime(lt_ref) => Some(lt_ref), + GenericArg::Type(_) | GenericArg::Const(_) => None, + }) + .nth(idx as usize)?; + match &self.store.lifetimes[lt_ref] { + LifetimeRef::Named(name) => Some(name.clone()), + _ => None, } }) .collect(); |