diff options
Diffstat (limited to 'crates/ra_ide_api/src/display.rs')
-rw-r--r-- | crates/ra_ide_api/src/display.rs | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/crates/ra_ide_api/src/display.rs b/crates/ra_ide_api/src/display.rs index c05d59689..efadb9b10 100644 --- a/crates/ra_ide_api/src/display.rs +++ b/crates/ra_ide_api/src/display.rs | |||
@@ -3,10 +3,36 @@ | |||
3 | use super::*; | 3 | use super::*; |
4 | use std::fmt::{self, Display}; | 4 | use std::fmt::{self, Display}; |
5 | use join_to_string::join; | 5 | use join_to_string::join; |
6 | use ra_syntax::ast::{self, AstNode, NameOwner, VisibilityOwner, TypeParamsOwner}; | 6 | use ra_syntax::{ast::{self, AstNode, NameOwner, VisibilityOwner, TypeParamsOwner}, SyntaxKind::{ATTR, COMMENT}}; |
7 | use std::convert::From; | 7 | use std::convert::From; |
8 | use hir::Docs; | 8 | use hir::Docs; |
9 | 9 | ||
10 | pub(crate) fn function_label(node: &ast::FnDef) -> String { | ||
11 | FunctionSignature::from(node).to_string() | ||
12 | } | ||
13 | |||
14 | pub(crate) fn const_label(node: &ast::ConstDef) -> String { | ||
15 | let label: String = node | ||
16 | .syntax() | ||
17 | .children_with_tokens() | ||
18 | .filter(|child| !(child.kind() == COMMENT || child.kind() == ATTR)) | ||
19 | .map(|node| node.to_string()) | ||
20 | .collect(); | ||
21 | |||
22 | label.trim().to_owned() | ||
23 | } | ||
24 | |||
25 | pub(crate) fn type_label(node: &ast::TypeAliasDef) -> String { | ||
26 | let label: String = node | ||
27 | .syntax() | ||
28 | .children_with_tokens() | ||
29 | .filter(|child| !(child.kind() == COMMENT || child.kind() == ATTR)) | ||
30 | .map(|node| node.to_string()) | ||
31 | .collect(); | ||
32 | |||
33 | label.trim().to_owned() | ||
34 | } | ||
35 | |||
10 | /// Contains information about a function signature | 36 | /// Contains information about a function signature |
11 | #[derive(Debug)] | 37 | #[derive(Debug)] |
12 | pub struct FunctionSignature { | 38 | pub struct FunctionSignature { |