diff options
Diffstat (limited to 'crates/ra_ide_api/src/completion/complete_dot.rs')
-rw-r--r-- | crates/ra_ide_api/src/completion/complete_dot.rs | 36 |
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 @@ | |||
1 | use hir::{Ty, AdtDef, Docs}; | 1 | use hir::{Ty, AdtDef}; |
2 | 2 | ||
3 | use crate::completion::{CompletionContext, Completions, CompletionItem, CompletionItemKind}; | 3 | use crate::completion::{CompletionContext, Completions}; |
4 | use 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). |
7 | pub(super) fn complete_dot(acc: &mut Completions, ctx: &CompletionContext) { | 6 | pub(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)] |
83 | mod tests { | 60 | mod 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); |