use Source for Function

This commit is contained in:
Aleksey Kladov 2019-06-11 16:49:56 +03:00
parent 36865adcb9
commit 4f94af3c4a
10 changed files with 30 additions and 28 deletions

View file

@ -100,7 +100,7 @@ impl Completions {
) {
let sig = func.signature(ctx.db);
let name = name.unwrap_or_else(|| sig.name().to_string());
let (_, ast_node) = func.source(ctx.db);
let ast_node = func.source(ctx.db).ast;
let detail = function_label(&ast_node);
let mut builder = CompletionItem::new(CompletionKind::Reference, ctx.source_range(), name)

View file

@ -33,7 +33,7 @@ impl FunctionSignature {
pub(crate) fn from_hir(db: &db::RootDatabase, function: hir::Function) -> Self {
let doc = function.docs(db);
let (_, ast_node) = function.source(db);
let ast_node = function.source(db).ast;
FunctionSignature::from(&*ast_node).with_doc_opt(doc)
}
}

View file

@ -164,13 +164,7 @@ impl NavigationTarget {
}
pub(crate) fn from_function(db: &RootDatabase, func: hir::Function) -> NavigationTarget {
let (file_id, fn_def) = func.source(db);
NavigationTarget::from_named(
file_id.original_file(db),
&*fn_def,
fn_def.doc_comment_text(),
fn_def.short_label(),
)
NavigationTarget::from_def_source(db, func)
}
pub(crate) fn from_field(db: &RootDatabase, field: hir::StructField) -> NavigationTarget {

View file

@ -96,8 +96,8 @@ pub(crate) fn hover(db: &RootDatabase, position: FilePosition) -> Option<RangeIn
match classify_name_ref(db, &analyzer, name_ref) {
Some(Method(it)) => {
let it = it.source(db).1;
res.extend(hover_text(it.doc_comment_text(), it.short_label()));
let src = it.source(db);
res.extend(hover_text(src.ast.doc_comment_text(), src.ast.short_label()));
}
Some(Macro(it)) => {
let it = it.source(db).1;
@ -111,8 +111,8 @@ pub(crate) fn hover(db: &RootDatabase, position: FilePosition) -> Option<RangeIn
}
Some(AssocItem(it)) => match it {
hir::ImplItem::Method(it) => {
let it = it.source(db).1;
res.extend(hover_text(it.doc_comment_text(), it.short_label()))
let src = it.source(db);
res.extend(hover_text(src.ast.doc_comment_text(), src.ast.short_label()))
}
hir::ImplItem::Const(it) => {
let it = it.source(db).1;
@ -132,8 +132,8 @@ pub(crate) fn hover(db: &RootDatabase, position: FilePosition) -> Option<RangeIn
}
}
hir::ModuleDef::Function(it) => {
let it = it.source(db).1;
res.extend(hover_text(it.doc_comment_text(), it.short_label()))
let src = it.source(db);
res.extend(hover_text(src.ast.doc_comment_text(), src.ast.short_label()))
}
hir::ModuleDef::Struct(it) => {
let src = it.source(db);