diff options
Diffstat (limited to 'crates/ra_hir/src/code_model_api.rs')
| -rw-r--r-- | crates/ra_hir/src/code_model_api.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs index 88eda5ed0fd..9ae620efd4c 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; use relative_path::RelativePathBuf; use ra_db::{CrateId, FileId}; -use ra_syntax::{ast, TreeArc, SyntaxNode}; +use ra_syntax::{ast::{self, AstNode, DocCommentsOwner}, TreeArc, SyntaxNode}; use crate::{ Name, DefId, Path, PerNs, ScopesWithSyntaxMapping, Ty, HirFileId, @@ -352,6 +352,20 @@ impl Function { pub fn generic_params(&self, db: &impl HirDatabase) -> Arc<GenericParams> { db.generic_params(self.def_id) } + + pub fn docs(&self, db: &impl HirDatabase) -> Option<String> { + let def_loc = self.def_id.loc(db); + let syntax = db.file_item(def_loc.source_item_id); + let fn_def = ast::FnDef::cast(&syntax).expect("fn def should point to FnDef node"); + + // doc_comment_text unconditionally returns a String + let comments = fn_def.doc_comment_text(); + if comments.is_empty() { + None + } else { + Some(comments) + } + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
