diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index b4388ad9656..cf6297c0370 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -1418,7 +1418,8 @@ pub fn has_non_default_type_params(self, db: &dyn HirDatabase) -> bool { } 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 192f6c0272b..08925fcdff5 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> + ``` + "#]], + ) +}