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
| -rw-r--r-- | crates/ide-completion/src/context/analysis.rs | 5 | ||||
| -rw-r--r-- | crates/ide-completion/src/tests/type_pos.rs | 29 |
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#" |