diff options
author | Jeremy Kolb <[email protected]> | 2019-01-22 13:55:05 +0000 |
---|---|---|
committer | Jeremy Kolb <[email protected]> | 2019-01-22 13:55:05 +0000 |
commit | b5404514834a27c682dc22d86bc5585c0cae3076 (patch) | |
tree | 38c6f5d9abb55d335894a69e2db3f6df31573dcf | |
parent | b77d780f0e9e7902695b949a25588fcb66bb5982 (diff) |
Move docs to Function
-rw-r--r-- | crates/ra_hir/src/code_model_api.rs | 21 | ||||
-rw-r--r-- | crates/ra_hir/src/code_model_impl/function.rs | 5 | ||||
-rw-r--r-- | crates/ra_ide_api/src/completion/completion_item.rs | 5 |
3 files changed, 18 insertions, 13 deletions
diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs index 57f405f4f..9ae620efd 100644 --- a/crates/ra_hir/src/code_model_api.rs +++ b/crates/ra_hir/src/code_model_api.rs | |||
@@ -2,7 +2,7 @@ use std::sync::Arc; | |||
2 | 2 | ||
3 | use relative_path::RelativePathBuf; | 3 | use relative_path::RelativePathBuf; |
4 | use ra_db::{CrateId, FileId}; | 4 | use ra_db::{CrateId, FileId}; |
5 | use ra_syntax::{ast, TreeArc, SyntaxNode}; | 5 | use ra_syntax::{ast::{self, AstNode, DocCommentsOwner}, TreeArc, SyntaxNode}; |
6 | 6 | ||
7 | use crate::{ | 7 | use crate::{ |
8 | Name, DefId, Path, PerNs, ScopesWithSyntaxMapping, Ty, HirFileId, | 8 | Name, DefId, Path, PerNs, ScopesWithSyntaxMapping, Ty, HirFileId, |
@@ -297,7 +297,6 @@ pub struct FnSignature { | |||
297 | /// True if the first param is `self`. This is relevant to decide whether this | 297 | /// True if the first param is `self`. This is relevant to decide whether this |
298 | /// can be called as a method. | 298 | /// can be called as a method. |
299 | pub(crate) has_self_param: bool, | 299 | pub(crate) has_self_param: bool, |
300 | pub(crate) documentation: String, | ||
301 | } | 300 | } |
302 | 301 | ||
303 | impl FnSignature { | 302 | impl FnSignature { |
@@ -318,10 +317,6 @@ impl FnSignature { | |||
318 | pub fn has_self_param(&self) -> bool { | 317 | pub fn has_self_param(&self) -> bool { |
319 | self.has_self_param | 318 | self.has_self_param |
320 | } | 319 | } |
321 | |||
322 | pub fn documentation(&self) -> &String { | ||
323 | &self.documentation | ||
324 | } | ||
325 | } | 320 | } |
326 | 321 | ||
327 | impl Function { | 322 | impl Function { |
@@ -357,6 +352,20 @@ impl Function { | |||
357 | pub fn generic_params(&self, db: &impl HirDatabase) -> Arc<GenericParams> { | 352 | pub fn generic_params(&self, db: &impl HirDatabase) -> Arc<GenericParams> { |
358 | db.generic_params(self.def_id) | 353 | db.generic_params(self.def_id) |
359 | } | 354 | } |
355 | |||
356 | pub fn docs(&self, db: &impl HirDatabase) -> Option<String> { | ||
357 | let def_loc = self.def_id.loc(db); | ||
358 | let syntax = db.file_item(def_loc.source_item_id); | ||
359 | let fn_def = ast::FnDef::cast(&syntax).expect("fn def should point to FnDef node"); | ||
360 | |||
361 | // doc_comment_text unconditionally returns a String | ||
362 | let comments = fn_def.doc_comment_text(); | ||
363 | if comments.is_empty() { | ||
364 | None | ||
365 | } else { | ||
366 | Some(comments) | ||
367 | } | ||
368 | } | ||
360 | } | 369 | } |
361 | 370 | ||
362 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 371 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
diff --git a/crates/ra_hir/src/code_model_impl/function.rs b/crates/ra_hir/src/code_model_impl/function.rs index c848f7a82..c68c6bfbf 100644 --- a/crates/ra_hir/src/code_model_impl/function.rs +++ b/crates/ra_hir/src/code_model_impl/function.rs | |||
@@ -2,7 +2,7 @@ mod scope; | |||
2 | 2 | ||
3 | use std::sync::Arc; | 3 | use std::sync::Arc; |
4 | 4 | ||
5 | use ra_syntax::{TreeArc, ast::{self, NameOwner, DocCommentsOwner}}; | 5 | use ra_syntax::{TreeArc, ast::{self, NameOwner}}; |
6 | 6 | ||
7 | use crate::{ | 7 | use crate::{ |
8 | DefId, HirDatabase, Name, AsName, Function, FnSignature, Module, | 8 | DefId, HirDatabase, Name, AsName, Function, FnSignature, Module, |
@@ -73,14 +73,11 @@ impl FnSignature { | |||
73 | TypeRef::unit() | 73 | TypeRef::unit() |
74 | }; | 74 | }; |
75 | 75 | ||
76 | let comments = node.doc_comment_text(); | ||
77 | |||
78 | let sig = FnSignature { | 76 | let sig = FnSignature { |
79 | name, | 77 | name, |
80 | params, | 78 | params, |
81 | ret_type, | 79 | ret_type, |
82 | has_self_param, | 80 | has_self_param, |
83 | documentation: comments, | ||
84 | }; | 81 | }; |
85 | Arc::new(sig) | 82 | Arc::new(sig) |
86 | } | 83 | } |
diff --git a/crates/ra_ide_api/src/completion/completion_item.rs b/crates/ra_ide_api/src/completion/completion_item.rs index dfaadbb20..d70c36889 100644 --- a/crates/ra_ide_api/src/completion/completion_item.rs +++ b/crates/ra_ide_api/src/completion/completion_item.rs | |||
@@ -259,9 +259,8 @@ impl Builder { | |||
259 | } | 259 | } |
260 | self.insert_text_format = InsertTextFormat::Snippet; | 260 | self.insert_text_format = InsertTextFormat::Snippet; |
261 | } | 261 | } |
262 | let sig = function.signature(ctx.db); | 262 | if let Some(docs) = function.docs(ctx.db) { |
263 | if !sig.documentation().is_empty() { | 263 | self.documentation = Some(docs); |
264 | self.documentation = Some(sig.documentation().clone()); | ||
265 | } | 264 | } |
266 | 265 | ||
267 | self.kind = Some(CompletionItemKind::Function); | 266 | self.kind = Some(CompletionItemKind::Function); |