Skip to content

Commit 5bcafd7

Browse files
committed
add tests for the completion of the callable field
1 parent 7cf3ab4 commit 5bcafd7

File tree

2 files changed

+44
-7
lines changed

2 files changed

+44
-7
lines changed

crates/ide-completion/src/completions/dot.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1206,4 +1206,17 @@ impl<B: Bar, F: core::ops::Deref<Target = B>> Foo<F> {
12061206
"#]],
12071207
);
12081208
}
1209+
1210+
#[test]
1211+
fn test_struct_function_field_completion() {
1212+
check(
1213+
r#"
1214+
struct S { field: fn() }
1215+
fn foo() { S { field: || {} }.fi$0() }
1216+
"#,
1217+
expect![[r#"
1218+
fd field fn()
1219+
"#]],
1220+
);
1221+
}
12091222
}

crates/ide-completion/src/render.rs

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1634,7 +1634,7 @@ fn main() {
16341634
fn struct_field_method_ref() {
16351635
check_kinds(
16361636
r#"
1637-
struct Foo { bar: u32 }
1637+
struct Foo { bar: u32, qux: fn() }
16381638
impl Foo { fn baz(&self) -> u32 { 0 } }
16391639
16401640
fn foo(f: Foo) { let _: &u32 = f.b$0 }
@@ -1644,24 +1644,48 @@ fn foo(f: Foo) { let _: &u32 = f.b$0 }
16441644
[
16451645
CompletionItem {
16461646
label: "baz()",
1647-
source_range: 98..99,
1648-
delete: 98..99,
1647+
source_range: 109..110,
1648+
delete: 109..110,
16491649
insert: "baz()$0",
16501650
kind: Method,
16511651
lookup: "baz",
16521652
detail: "fn(&self) -> u32",
1653-
ref_match: "&@96",
1653+
ref_match: "&@107",
16541654
},
16551655
CompletionItem {
16561656
label: "bar",
1657-
source_range: 98..99,
1658-
delete: 98..99,
1657+
source_range: 109..110,
1658+
delete: 109..110,
16591659
insert: "bar",
16601660
kind: SymbolKind(
16611661
Field,
16621662
),
16631663
detail: "u32",
1664-
ref_match: "&@96",
1664+
ref_match: "&@107",
1665+
},
1666+
CompletionItem {
1667+
label: "qux",
1668+
source_range: 109..110,
1669+
text_edit: TextEdit {
1670+
indels: [
1671+
Indel {
1672+
insert: "(",
1673+
delete: 107..107,
1674+
},
1675+
Indel {
1676+
insert: ")",
1677+
delete: 108..108,
1678+
},
1679+
Indel {
1680+
insert: "qux()",
1681+
delete: 109..110,
1682+
},
1683+
],
1684+
},
1685+
kind: SymbolKind(
1686+
Field,
1687+
),
1688+
detail: "fn()",
16651689
},
16661690
]
16671691
"#]],

0 commit comments

Comments
 (0)