Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_completion/src/context.rs')
-rw-r--r--crates/ide_completion/src/context.rs22
1 files changed, 21 insertions, 1 deletions
diff --git a/crates/ide_completion/src/context.rs b/crates/ide_completion/src/context.rs
index 8fae06f7e2..ac01968126 100644
--- a/crates/ide_completion/src/context.rs
+++ b/crates/ide_completion/src/context.rs
@@ -598,7 +598,8 @@ impl<'a> CompletionContext<'a> {
.map(|c| (Some(c.return_type()), None))
.unwrap_or((None, None))
},
- ast::Stmt(_it) => (None, None),
+ ast::ParamList(__) => (None, None),
+ ast::Stmt(__) => (None, None),
ast::Item(__) => (None, None),
_ => {
match node.parent() {
@@ -1174,4 +1175,23 @@ fn foo() {
expect![[r#"ty: Foo, name: ?"#]],
);
}
+
+ #[test]
+ fn expected_type_param_pat() {
+ check_expected_type_and_name(
+ r#"
+struct Foo { field: u32 }
+fn foo(a$0: Foo) {}
+"#,
+ expect![[r#"ty: Foo, name: ?"#]],
+ );
+ check_expected_type_and_name(
+ r#"
+struct Foo { field: u32 }
+fn foo($0: Foo) {}
+"#,
+ // FIXME make this work, currently fails due to pattern recovery eating the `:`
+ expect![[r#"ty: ?, name: ?"#]],
+ );
+ }
}