Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/hir/src/lib.rs3
-rw-r--r--crates/ide/src/hover/tests.rs22
2 files changed, 24 insertions, 1 deletions
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<Layout, LayoutError> {
- 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>
+ ```
+ "#]],
+ )
+}