aboutsummaryrefslogtreecommitdiff
path: root/crates/completion/src/presentation.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/completion/src/presentation.rs')
-rw-r--r--crates/completion/src/presentation.rs27
1 files changed, 13 insertions, 14 deletions
diff --git a/crates/completion/src/presentation.rs b/crates/completion/src/presentation.rs
index 0a6f5a1ea..38bb8fa3e 100644
--- a/crates/completion/src/presentation.rs
+++ b/crates/completion/src/presentation.rs
@@ -11,8 +11,8 @@ use crate::{
11 CompletionScore, 11 CompletionScore,
12 RootDatabase, 12 RootDatabase,
13 { 13 {
14 completion_item::Builder, CompletionContext, CompletionItem, CompletionItemKind, 14 item::Builder, CompletionContext, CompletionItem, CompletionItemKind, CompletionKind,
15 CompletionKind, Completions, 15 Completions,
16 }, 16 },
17}; 17};
18 18
@@ -20,7 +20,7 @@ impl Completions {
20 pub(crate) fn add_field(&mut self, ctx: &CompletionContext, field: hir::Field, ty: &Type) { 20 pub(crate) fn add_field(&mut self, ctx: &CompletionContext, field: hir::Field, ty: &Type) {
21 let is_deprecated = is_deprecated(field, ctx.db); 21 let is_deprecated = is_deprecated(field, ctx.db);
22 let name = field.name(ctx.db); 22 let name = field.name(ctx.db);
23 let mut completion_item = 23 let mut item =
24 CompletionItem::new(CompletionKind::Reference, ctx.source_range(), name.to_string()) 24 CompletionItem::new(CompletionKind::Reference, ctx.source_range(), name.to_string())
25 .kind(CompletionItemKind::Field) 25 .kind(CompletionItemKind::Field)
26 .detail(ty.display(ctx.db).to_string()) 26 .detail(ty.display(ctx.db).to_string())
@@ -28,10 +28,10 @@ impl Completions {
28 .set_deprecated(is_deprecated); 28 .set_deprecated(is_deprecated);
29 29
30 if let Some(score) = compute_score(ctx, &ty, &name.to_string()) { 30 if let Some(score) = compute_score(ctx, &ty, &name.to_string()) {
31 completion_item = completion_item.set_score(score); 31 item = item.set_score(score);
32 } 32 }
33 33
34 completion_item.add_to(self); 34 item.add_to(self);
35 } 35 }
36 36
37 pub(crate) fn add_tuple_field(&mut self, ctx: &CompletionContext, field: usize, ty: &Type) { 37 pub(crate) fn add_tuple_field(&mut self, ctx: &CompletionContext, field: usize, ty: &Type) {
@@ -98,12 +98,11 @@ impl Completions {
98 _ => None, 98 _ => None,
99 }; 99 };
100 100
101 let mut completion_item = 101 let mut item = CompletionItem::new(completion_kind, ctx.source_range(), local_name.clone());
102 CompletionItem::new(completion_kind, ctx.source_range(), local_name.clone());
103 if let ScopeDef::Local(local) = resolution { 102 if let ScopeDef::Local(local) = resolution {
104 let ty = local.ty(ctx.db); 103 let ty = local.ty(ctx.db);
105 if !ty.is_unknown() { 104 if !ty.is_unknown() {
106 completion_item = completion_item.detail(ty.display(ctx.db).to_string()); 105 item = item.detail(ty.display(ctx.db).to_string());
107 } 106 }
108 }; 107 };
109 108
@@ -114,7 +113,7 @@ impl Completions {
114 if let Some(score) = 113 if let Some(score) =
115 compute_score_from_active(&active_type, &active_name, &ty, &local_name) 114 compute_score_from_active(&active_type, &active_name, &ty, &local_name)
116 { 115 {
117 completion_item = completion_item.set_score(score); 116 item = item.set_score(score);
118 } 117 }
119 ref_match = refed_type_matches(&active_type, &active_name, &ty, &local_name); 118 ref_match = refed_type_matches(&active_type, &active_name, &ty, &local_name);
120 } 119 }
@@ -130,7 +129,7 @@ impl Completions {
130 }; 129 };
131 if has_non_default_type_params { 130 if has_non_default_type_params {
132 mark::hit!(inserts_angle_brackets_for_generics); 131 mark::hit!(inserts_angle_brackets_for_generics);
133 completion_item = completion_item 132 item = item
134 .lookup_by(local_name.clone()) 133 .lookup_by(local_name.clone())
135 .label(format!("{}<…>", local_name)) 134 .label(format!("{}<…>", local_name))
136 .insert_snippet(cap, format!("{}<$0>", local_name)); 135 .insert_snippet(cap, format!("{}<$0>", local_name));
@@ -138,7 +137,7 @@ impl Completions {
138 } 137 }
139 } 138 }
140 139
141 completion_item.kind(kind).set_documentation(docs).set_ref_match(ref_match).add_to(self) 140 item.kind(kind).set_documentation(docs).set_ref_match(ref_match).add_to(self)
142 } 141 }
143 142
144 pub(crate) fn add_macro( 143 pub(crate) fn add_macro(
@@ -506,7 +505,7 @@ mod tests {
506 use test_utils::mark; 505 use test_utils::mark;
507 506
508 use crate::{ 507 use crate::{
509 test_utils::{check_edit, check_edit_with_config, do_completion, get_all_completion_items}, 508 test_utils::{check_edit, check_edit_with_config, do_completion, get_all_items},
510 CompletionConfig, CompletionKind, CompletionScore, 509 CompletionConfig, CompletionKind, CompletionScore,
511 }; 510 };
512 511
@@ -524,7 +523,7 @@ mod tests {
524 } 523 }
525 } 524 }
526 525
527 let mut completions = get_all_completion_items(CompletionConfig::default(), ra_fixture); 526 let mut completions = get_all_items(CompletionConfig::default(), ra_fixture);
528 completions.sort_by_key(|it| (Reverse(it.score()), it.label().to_string())); 527 completions.sort_by_key(|it| (Reverse(it.score()), it.label().to_string()));
529 let actual = completions 528 let actual = completions
530 .into_iter() 529 .into_iter()
@@ -661,7 +660,7 @@ fn main() { let _: m::Spam = S<|> }
661 } 660 }
662 661
663 #[test] 662 #[test]
664 fn sets_deprecated_flag_in_completion_items() { 663 fn sets_deprecated_flag_in_items() {
665 check( 664 check(
666 r#" 665 r#"
667#[deprecated] 666#[deprecated]