mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-15 01:17:27 +00:00
show local variable types in completion
This commit is contained in:
parent
5f3ff157e3
commit
8e49bb664a
6 changed files with 30 additions and 9 deletions
|
@ -256,6 +256,14 @@ impl SourceAnalyzer {
|
|||
Some(self.infer.as_ref()?[pat_id].clone())
|
||||
}
|
||||
|
||||
pub fn type_of_pat_by_id(
|
||||
&self,
|
||||
_db: &impl HirDatabase,
|
||||
pat_id: expr::PatId,
|
||||
) -> Option<crate::Ty> {
|
||||
Some(self.infer.as_ref()?[pat_id].clone())
|
||||
}
|
||||
|
||||
pub fn resolve_method_call(&self, call: &ast::MethodCallExpr) -> Option<Function> {
|
||||
let expr_id = self.body_source_map.as_ref()?.node_expr(&call.clone().into())?;
|
||||
self.infer.as_ref()?.method_resolution(expr_id)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//! This modules takes care of rendering various defenitions as completion items.
|
||||
use hir::{Docs, HasSource, HirDisplay, PerNs, Resolution};
|
||||
use hir::{Docs, HasSource, HirDisplay, PerNs, Resolution, Ty};
|
||||
use join_to_string::join;
|
||||
use ra_syntax::ast::NameOwner;
|
||||
use test_utils::tested_by;
|
||||
|
@ -80,10 +80,18 @@ impl Completions {
|
|||
None,
|
||||
),
|
||||
};
|
||||
CompletionItem::new(completion_kind, ctx.source_range(), local_name)
|
||||
.kind(kind)
|
||||
.set_documentation(docs)
|
||||
.add_to(self)
|
||||
|
||||
let mut completion_item =
|
||||
CompletionItem::new(completion_kind, ctx.source_range(), local_name);
|
||||
if let Resolution::LocalBinding(pat_id) = def {
|
||||
let ty = ctx
|
||||
.analyzer
|
||||
.type_of_pat_by_id(ctx.db, pat_id.clone())
|
||||
.filter(|t| t != &Ty::Unknown)
|
||||
.map(|t| t.display(ctx.db).to_string());
|
||||
completion_item = completion_item.set_detail(ty);
|
||||
};
|
||||
completion_item.kind(kind).set_documentation(docs).add_to(self)
|
||||
}
|
||||
|
||||
pub(crate) fn add_function(&mut self, ctx: &CompletionContext, func: hir::Function) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
created: "2019-05-23T22:23:35.122168608Z"
|
||||
created: "2019-07-23T16:11:48.828805910Z"
|
||||
creator: insta@0.8.1
|
||||
source: crates/ra_ide_api/src/completion/completion_item.rs
|
||||
expression: kind_completions
|
||||
|
@ -18,6 +18,7 @@ expression: kind_completions
|
|||
delete: [214; 214),
|
||||
insert: "b",
|
||||
kind: Binding,
|
||||
detail: "i32",
|
||||
},
|
||||
CompletionItem {
|
||||
label: "quux",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
created: "2019-05-23T22:23:35.122797188Z"
|
||||
created: "2019-07-23T16:11:48.828811567Z"
|
||||
creator: insta@0.8.1
|
||||
source: crates/ra_ide_api/src/completion/completion_item.rs
|
||||
expression: kind_completions
|
||||
|
@ -19,6 +19,7 @@ expression: kind_completions
|
|||
delete: [79; 79),
|
||||
insert: "x",
|
||||
kind: Binding,
|
||||
detail: "i32",
|
||||
},
|
||||
CompletionItem {
|
||||
label: "y",
|
||||
|
@ -26,5 +27,6 @@ expression: kind_completions
|
|||
delete: [79; 79),
|
||||
insert: "y",
|
||||
kind: Binding,
|
||||
detail: "i32",
|
||||
},
|
||||
]
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
created: "2019-05-23T22:23:35.142044205Z"
|
||||
created: "2019-07-23T16:11:48.860949870Z"
|
||||
creator: insta@0.8.1
|
||||
source: crates/ra_ide_api/src/completion/completion_item.rs
|
||||
expression: kind_completions
|
||||
|
@ -11,6 +11,7 @@ expression: kind_completions
|
|||
delete: [126; 126),
|
||||
insert: "bar",
|
||||
kind: Binding,
|
||||
detail: "i32",
|
||||
},
|
||||
CompletionItem {
|
||||
label: "foo",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
created: "2019-05-23T22:23:35.141900902Z"
|
||||
created: "2019-07-23T16:11:48.859812318Z"
|
||||
creator: insta@0.8.1
|
||||
source: crates/ra_ide_api/src/completion/completion_item.rs
|
||||
expression: kind_completions
|
||||
|
@ -18,5 +18,6 @@ expression: kind_completions
|
|||
delete: [25; 25),
|
||||
insert: "self",
|
||||
kind: Binding,
|
||||
detail: "&{unknown}",
|
||||
},
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue