aboutsummaryrefslogtreecommitdiff
path: root/crates/ide_completion/src/render.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ide_completion/src/render.rs')
-rw-r--r--crates/ide_completion/src/render.rs44
1 files changed, 42 insertions, 2 deletions
diff --git a/crates/ide_completion/src/render.rs b/crates/ide_completion/src/render.rs
index 23e00aa47..9ce49074f 100644
--- a/crates/ide_completion/src/render.rs
+++ b/crates/ide_completion/src/render.rs
@@ -148,8 +148,10 @@ impl<'a> Render<'a> {
148 ..CompletionRelevance::default() 148 ..CompletionRelevance::default()
149 }); 149 });
150 150
151 if let Some(ref_match) = compute_ref_match(self.ctx.completion, ty) { 151 if let Some(_ref_match) = compute_ref_match(self.ctx.completion, ty) {
152 item.ref_match(ref_match); 152 // FIXME
153 // For now we don't properly calculate the edits for ref match
154 // completions on struct fields, so we've disabled them. See #8058.
153 } 155 }
154 156
155 item.build() 157 item.build()
@@ -1313,4 +1315,42 @@ fn main() {
1313 "#]], 1315 "#]],
1314 ) 1316 )
1315 } 1317 }
1318
1319 #[test]
1320 fn struct_field_method_ref() {
1321 check(
1322 r#"
1323struct Foo { bar: u32 }
1324impl Foo { fn baz(&self) -> u32 { 0 } }
1325
1326fn foo(f: Foo) { let _: &u32 = f.b$0 }
1327"#,
1328 // FIXME
1329 // Ideally we'd also suggest &f.bar and &f.baz() as exact
1330 // type matches. See #8058.
1331 expect![[r#"
1332 [
1333 CompletionItem {
1334 label: "bar",
1335 source_range: 98..99,
1336 delete: 98..99,
1337 insert: "bar",
1338 kind: SymbolKind(
1339 Field,
1340 ),
1341 detail: "u32",
1342 },
1343 CompletionItem {
1344 label: "baz()",
1345 source_range: 98..99,
1346 delete: 98..99,
1347 insert: "baz()$0",
1348 kind: Method,
1349 lookup: "baz",
1350 detail: "fn(&self) -> u32",
1351 },
1352 ]
1353 "#]],
1354 );
1355 }
1316} 1356}