diff options
| author | dfireBird <me@dfirebird.dev> | 2023-11-12 16:44:57 +0530 |
|---|---|---|
| committer | dfireBird <me@dfirebird.dev> | 2023-11-28 22:21:57 +0530 |
| commit | 5bcafd7dc06e2cede234f0df5a7138d63ac92f6a (patch) | |
| tree | 1fbc0b5cb43e489559deeed9af8dca4bbb435c10 | |
| parent | 7cf3ab4bd2927eda9799be5df747ac810cf2b0bb (diff) | |
| download | rust-5bcafd7dc06e2cede234f0df5a7138d63ac92f6a.tar.gz rust-5bcafd7dc06e2cede234f0df5a7138d63ac92f6a.zip | |
add tests for the completion of the callable field
| -rw-r--r-- | crates/ide-completion/src/completions/dot.rs | 13 | ||||
| -rw-r--r-- | crates/ide-completion/src/render.rs | 38 |
2 files changed, 44 insertions, 7 deletions
diff --git a/crates/ide-completion/src/completions/dot.rs b/crates/ide-completion/src/completions/dot.rs index 12591449cdb..430dea22257 100644 --- a/crates/ide-completion/src/completions/dot.rs +++ b/crates/ide-completion/src/completions/dot.rs @@ -1206,4 +1206,17 @@ impl<B: Bar, F: core::ops::Deref<Target = B>> Foo<F> { "#]], ); } + + #[test] + fn test_struct_function_field_completion() { + check( + r#" +struct S { field: fn() } +fn foo() { S { field: || {} }.fi$0() } +"#, + expect![[r#" + fd field fn() + "#]], + ); + } } diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs index a59b95e1e6e..fa6854b0888 100644 --- a/crates/ide-completion/src/render.rs +++ b/crates/ide-completion/src/render.rs @@ -1634,7 +1634,7 @@ fn main() { fn struct_field_method_ref() { check_kinds( r#" -struct Foo { bar: u32 } +struct Foo { bar: u32, qux: fn() } impl Foo { fn baz(&self) -> u32 { 0 } } fn foo(f: Foo) { let _: &u32 = f.b$0 } @@ -1644,24 +1644,48 @@ fn foo(f: Foo) { let _: &u32 = f.b$0 } [ CompletionItem { label: "baz()", - source_range: 98..99, - delete: 98..99, + source_range: 109..110, + delete: 109..110, insert: "baz()$0", kind: Method, lookup: "baz", detail: "fn(&self) -> u32", - ref_match: "&@96", + ref_match: "&@107", }, CompletionItem { label: "bar", - source_range: 98..99, - delete: 98..99, + source_range: 109..110, + delete: 109..110, insert: "bar", kind: SymbolKind( Field, ), detail: "u32", - ref_match: "&@96", + ref_match: "&@107", + }, + CompletionItem { + label: "qux", + source_range: 109..110, + text_edit: TextEdit { + indels: [ + Indel { + insert: "(", + delete: 107..107, + }, + Indel { + insert: ")", + delete: 108..108, + }, + Indel { + insert: "qux()", + delete: 109..110, + }, + ], + }, + kind: SymbolKind( + Field, + ), + detail: "fn()", }, ] "#]], |
