diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-12-13 11:34:43 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2020-12-13 11:34:43 +0000 |
commit | ca3a54f0a4b59fb2c4429096a1d5c1bc2b8e761e (patch) | |
tree | c9c4847ae019de3cc61ecb5a908c99d8a41d3d17 /crates/hir_def | |
parent | a15d19619e097b14b670064a4edc054a4251f479 (diff) | |
parent | ae8a8020857080ea527cc1d0e57a592d6e587a64 (diff) |
Merge #6852
6852: Ignore lifetime params in substitutions r=matklad a=Veykril
[`hir_ty::utils::Generics`](https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_ty/src/utils.rs#L153) currently only assumes type parameters but not lifetime parameters and therefor creates incorrect index and length calculations, this PR just makes the use sites ignore LifetimeGenerics for now.
This fixes the panic at least locally for me for `analysis-stats`. Funnily enough this panic prevented me from using reference search for the `args` field to fix this problem.
Co-authored-by: Lukas Wirth <[email protected]>
Diffstat (limited to 'crates/hir_def')
-rw-r--r-- | crates/hir_def/src/item_tree.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/crates/hir_def/src/item_tree.rs b/crates/hir_def/src/item_tree.rs index c6ada271e..b08167281 100644 --- a/crates/hir_def/src/item_tree.rs +++ b/crates/hir_def/src/item_tree.rs | |||
@@ -246,7 +246,10 @@ struct GenericParamsStorage { | |||
246 | 246 | ||
247 | impl GenericParamsStorage { | 247 | impl GenericParamsStorage { |
248 | fn alloc(&mut self, params: GenericParams) -> GenericParamsId { | 248 | fn alloc(&mut self, params: GenericParams) -> GenericParamsId { |
249 | if params.types.is_empty() && params.where_predicates.is_empty() { | 249 | if params.types.is_empty() |
250 | && params.lifetimes.is_empty() | ||
251 | && params.where_predicates.is_empty() | ||
252 | { | ||
250 | return GenericParamsId::EMPTY; | 253 | return GenericParamsId::EMPTY; |
251 | } | 254 | } |
252 | 255 | ||