Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #21542 from A4-Tacks/inferred-static
fix: complete inferred type in static
Lukas Wirth 3 months ago
parent d61f4c7 · parent 259f94b · commit 799ce04
-rw-r--r--crates/ide-completion/src/context/analysis.rs5
-rw-r--r--crates/ide-completion/src/tests/type_pos.rs29
2 files changed, 34 insertions, 0 deletions
diff --git a/crates/ide-completion/src/context/analysis.rs b/crates/ide-completion/src/context/analysis.rs
index 8842d29c8d..1c8bc656ca 100644
--- a/crates/ide-completion/src/context/analysis.rs
+++ b/crates/ide-completion/src/context/analysis.rs
@@ -1250,6 +1250,11 @@ fn classify_name_ref<'db>(
let original = ast::Const::cast(name.syntax().parent()?)?;
TypeLocation::TypeAscription(TypeAscriptionTarget::Const(original.body()))
},
+ ast::Static(it) => {
+ let name = find_opt_node_in_file(original_file, it.name())?;
+ let original = ast::Static::cast(name.syntax().parent()?)?;
+ TypeLocation::TypeAscription(TypeAscriptionTarget::Const(original.body()))
+ },
ast::RetType(it) => {
it.thin_arrow_token()?;
let parent = match ast::Fn::cast(parent.parent()?) {
diff --git a/crates/ide-completion/src/tests/type_pos.rs b/crates/ide-completion/src/tests/type_pos.rs
index 3bbba18c2b..7c6b7370aa 100644
--- a/crates/ide-completion/src/tests/type_pos.rs
+++ b/crates/ide-completion/src/tests/type_pos.rs
@@ -184,6 +184,35 @@ const FOO: $0 = Foo(2);
}
#[test]
+fn inferred_type_static() {
+ check_with_base_items(
+ r#"
+struct Foo<T>(T);
+static FOO: $0 = Foo(2);
+"#,
+ expect![[r#"
+ en Enum Enum
+ ma makro!(…) macro_rules! makro
+ md module
+ st Foo<…> Foo<{unknown}>
+ st Record Record
+ st Tuple Tuple
+ st Unit Unit
+ tt Trait
+ un Union Union
+ bt u32 u32
+ it Foo<i32>
+ kw crate::
+ kw dyn
+ kw fn
+ kw for
+ kw impl
+ kw self::
+ "#]],
+ );
+}
+
+#[test]
fn inferred_type_closure_param() {
check_with_base_items(
r#"