From 34a8cd6a7ab58d6d53d9c3af1fed2f4cc18a9e0e Mon Sep 17 00:00:00 2001 From: dfireBird Date: Thu, 28 Mar 2024 20:31:15 +0530 Subject: [PATCH] fix ADT hover considering only type or const len not lifetimes --- crates/hir/src/lib.rs | 3 ++- crates/ide/src/hover/tests.rs | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index b4388ad965..cf6297c037 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -1418,7 +1418,8 @@ impl Adt { } pub fn layout(self, db: &dyn HirDatabase) -> Result { - if db.generic_params(self.into()).iter().count() != 0 { + let generic_params = &db.generic_params(self.into()); + if generic_params.iter().next().is_some() || generic_params.iter_lt().next().is_some() { return Err(LayoutError::HasPlaceholder); } let krate = self.krate(db).id; diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs index 192f6c0272..08925fcdff 100644 --- a/crates/ide/src/hover/tests.rs +++ b/crates/ide/src/hover/tests.rs @@ -7856,3 +7856,25 @@ impl Iterator for S { "#]], ); } + +#[test] +fn hover_lifetime_regression_16963() { + check( + r#" +struct Pedro$0<'a> { + hola: &'a str +} +"#, + expect![[r#" + *Pedro* + + ```rust + test + ``` + + ```rust + struct Pedro<'a> + ``` + "#]], + ) +}