aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/completion/complete_dot.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide_api/src/completion/complete_dot.rs')
-rw-r--r--crates/ra_ide_api/src/completion/complete_dot.rs36
1 files changed, 6 insertions, 30 deletions
diff --git a/crates/ra_ide_api/src/completion/complete_dot.rs b/crates/ra_ide_api/src/completion/complete_dot.rs
index 20fa323ce..d5ad2e79f 100644
--- a/crates/ra_ide_api/src/completion/complete_dot.rs
+++ b/crates/ra_ide_api/src/completion/complete_dot.rs
@@ -1,7 +1,6 @@
1use hir::{Ty, AdtDef, Docs}; 1use hir::{Ty, AdtDef};
2 2
3use crate::completion::{CompletionContext, Completions, CompletionItem, CompletionItemKind}; 3use crate::completion::{CompletionContext, Completions};
4use crate::completion::completion_item::CompletionKind;
5 4
6/// Complete dot accesses, i.e. fields or methods (currently only fields). 5/// Complete dot accesses, i.e. fields or methods (currently only fields).
7pub(super) fn complete_dot(acc: &mut Completions, ctx: &CompletionContext) { 6pub(super) fn complete_dot(acc: &mut Completions, ctx: &CompletionContext) {
@@ -29,15 +28,7 @@ fn complete_fields(acc: &mut Completions, ctx: &CompletionContext, receiver: Ty)
29 match def_id { 28 match def_id {
30 AdtDef::Struct(s) => { 29 AdtDef::Struct(s) => {
31 for field in s.fields(ctx.db) { 30 for field in s.fields(ctx.db) {
32 CompletionItem::new( 31 acc.add_field(ctx, field, substs);
33 CompletionKind::Reference,
34 ctx.source_range(),
35 field.name(ctx.db).to_string(),
36 )
37 .kind(CompletionItemKind::Field)
38 .detail(field.ty(ctx.db).subst(substs).to_string())
39 .set_documentation(field.docs(ctx.db))
40 .add_to(acc);
41 } 32 }
42 } 33 }
43 34
@@ -47,14 +38,7 @@ fn complete_fields(acc: &mut Completions, ctx: &CompletionContext, receiver: Ty)
47 } 38 }
48 Ty::Tuple(fields) => { 39 Ty::Tuple(fields) => {
49 for (i, ty) in fields.iter().enumerate() { 40 for (i, ty) in fields.iter().enumerate() {
50 CompletionItem::new( 41 acc.add_pos_field(ctx, i, ty);
51 CompletionKind::Reference,
52 ctx.source_range(),
53 i.to_string(),
54 )
55 .kind(CompletionItemKind::Field)
56 .detail(ty.to_string())
57 .add_to(acc);
58 } 42 }
59 } 43 }
60 _ => {} 44 _ => {}
@@ -66,14 +50,7 @@ fn complete_methods(acc: &mut Completions, ctx: &CompletionContext, receiver: Ty
66 receiver.iterate_methods(ctx.db, |_ty, func| { 50 receiver.iterate_methods(ctx.db, |_ty, func| {
67 let sig = func.signature(ctx.db); 51 let sig = func.signature(ctx.db);
68 if sig.has_self_param() { 52 if sig.has_self_param() {
69 CompletionItem::new( 53 acc.add_function(ctx, func);
70 CompletionKind::Reference,
71 ctx.source_range(),
72 sig.name().to_string(),
73 )
74 .from_function(ctx, func)
75 .kind(CompletionItemKind::Method)
76 .add_to(acc);
77 } 54 }
78 None::<()> 55 None::<()>
79 }); 56 });
@@ -81,8 +58,7 @@ fn complete_methods(acc: &mut Completions, ctx: &CompletionContext, receiver: Ty
81 58
82#[cfg(test)] 59#[cfg(test)]
83mod tests { 60mod tests {
84 use crate::completion::*; 61 use crate::completion::{check_completion, CompletionKind};
85 use crate::completion::completion_item::check_completion;
86 62
87 fn check_ref_completion(name: &str, code: &str) { 63 fn check_ref_completion(name: &str, code: &str) {
88 check_completion(name, code, CompletionKind::Reference); 64 check_completion(name, code, CompletionKind::Reference);