Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #16967 - dfireBird:fix-16963, r=lnicola
fix: ADT hover considering only type or const len not lifetimes I feel like test doesn't do much. Please suggest if I should improve it? Fixes #16963
bors 2024-03-28
parent 899db83 · parent 34a8cd6 · commit ab10eea
-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>
+ ```
+ "#]],
+ )
+}