diff options
Diffstat (limited to 'crates/ra_ide')
-rw-r--r-- | crates/ra_ide/src/display/short_label.rs | 14 | ||||
-rw-r--r-- | crates/ra_ide/src/file_structure.rs | 28 | ||||
-rw-r--r-- | crates/ra_ide/src/inlay_hints.rs | 6 | ||||
-rw-r--r-- | crates/ra_ide/src/references/rename.rs | 5 |
4 files changed, 22 insertions, 31 deletions
diff --git a/crates/ra_ide/src/display/short_label.rs b/crates/ra_ide/src/display/short_label.rs index c600908a4..bddf1bd47 100644 --- a/crates/ra_ide/src/display/short_label.rs +++ b/crates/ra_ide/src/display/short_label.rs | |||
@@ -1,6 +1,6 @@ | |||
1 | //! FIXME: write short doc here | 1 | //! FIXME: write short doc here |
2 | 2 | ||
3 | use ra_syntax::ast::{self, AstNode, NameOwner, TypeAscriptionOwner, VisibilityOwner}; | 3 | use ra_syntax::ast::{self, AstNode, NameOwner, VisibilityOwner}; |
4 | use stdx::format_to; | 4 | use stdx::format_to; |
5 | 5 | ||
6 | pub(crate) trait ShortLabel { | 6 | pub(crate) trait ShortLabel { |
@@ -55,19 +55,19 @@ impl ShortLabel for ast::TypeAlias { | |||
55 | 55 | ||
56 | impl ShortLabel for ast::Const { | 56 | impl ShortLabel for ast::Const { |
57 | fn short_label(&self) -> Option<String> { | 57 | fn short_label(&self) -> Option<String> { |
58 | short_label_from_ascribed_node(self, "const ") | 58 | short_label_from_ty(self, self.ty(), "const ") |
59 | } | 59 | } |
60 | } | 60 | } |
61 | 61 | ||
62 | impl ShortLabel for ast::Static { | 62 | impl ShortLabel for ast::Static { |
63 | fn short_label(&self) -> Option<String> { | 63 | fn short_label(&self) -> Option<String> { |
64 | short_label_from_ascribed_node(self, "static ") | 64 | short_label_from_ty(self, self.ty(), "static ") |
65 | } | 65 | } |
66 | } | 66 | } |
67 | 67 | ||
68 | impl ShortLabel for ast::RecordField { | 68 | impl ShortLabel for ast::RecordField { |
69 | fn short_label(&self) -> Option<String> { | 69 | fn short_label(&self) -> Option<String> { |
70 | short_label_from_ascribed_node(self, "") | 70 | short_label_from_ty(self, self.ty(), "") |
71 | } | 71 | } |
72 | } | 72 | } |
73 | 73 | ||
@@ -77,13 +77,13 @@ impl ShortLabel for ast::Variant { | |||
77 | } | 77 | } |
78 | } | 78 | } |
79 | 79 | ||
80 | fn short_label_from_ascribed_node<T>(node: &T, prefix: &str) -> Option<String> | 80 | fn short_label_from_ty<T>(node: &T, ty: Option<ast::TypeRef>, prefix: &str) -> Option<String> |
81 | where | 81 | where |
82 | T: NameOwner + VisibilityOwner + TypeAscriptionOwner, | 82 | T: NameOwner + VisibilityOwner, |
83 | { | 83 | { |
84 | let mut buf = short_label_from_node(node, prefix)?; | 84 | let mut buf = short_label_from_node(node, prefix)?; |
85 | 85 | ||
86 | if let Some(type_ref) = node.ascribed_type() { | 86 | if let Some(type_ref) = ty { |
87 | format_to!(buf, ": {}", type_ref.syntax()); | 87 | format_to!(buf, ": {}", type_ref.syntax()); |
88 | } | 88 | } |
89 | 89 | ||
diff --git a/crates/ra_ide/src/file_structure.rs b/crates/ra_ide/src/file_structure.rs index 7d378f2d0..22cf8637a 100644 --- a/crates/ra_ide/src/file_structure.rs +++ b/crates/ra_ide/src/file_structure.rs | |||
@@ -1,5 +1,5 @@ | |||
1 | use ra_syntax::{ | 1 | use ra_syntax::{ |
2 | ast::{self, AttrsOwner, GenericParamsOwner, NameOwner, TypeAscriptionOwner}, | 2 | ast::{self, AttrsOwner, GenericParamsOwner, NameOwner}, |
3 | match_ast, AstNode, SourceFile, SyntaxKind, SyntaxNode, TextRange, WalkEvent, | 3 | match_ast, AstNode, SourceFile, SyntaxKind, SyntaxNode, TextRange, WalkEvent, |
4 | }; | 4 | }; |
5 | 5 | ||
@@ -52,18 +52,11 @@ pub fn file_structure(file: &SourceFile) -> Vec<StructureNode> { | |||
52 | 52 | ||
53 | fn structure_node(node: &SyntaxNode) -> Option<StructureNode> { | 53 | fn structure_node(node: &SyntaxNode) -> Option<StructureNode> { |
54 | fn decl<N: NameOwner + AttrsOwner>(node: N) -> Option<StructureNode> { | 54 | fn decl<N: NameOwner + AttrsOwner>(node: N) -> Option<StructureNode> { |
55 | decl_with_detail(node, None) | 55 | decl_with_detail(&node, None) |
56 | } | ||
57 | |||
58 | fn decl_with_ascription<N: NameOwner + AttrsOwner + TypeAscriptionOwner>( | ||
59 | node: N, | ||
60 | ) -> Option<StructureNode> { | ||
61 | let ty = node.ascribed_type(); | ||
62 | decl_with_type_ref(node, ty) | ||
63 | } | 56 | } |
64 | 57 | ||
65 | fn decl_with_type_ref<N: NameOwner + AttrsOwner>( | 58 | fn decl_with_type_ref<N: NameOwner + AttrsOwner>( |
66 | node: N, | 59 | node: &N, |
67 | type_ref: Option<ast::TypeRef>, | 60 | type_ref: Option<ast::TypeRef>, |
68 | ) -> Option<StructureNode> { | 61 | ) -> Option<StructureNode> { |
69 | let detail = type_ref.map(|type_ref| { | 62 | let detail = type_ref.map(|type_ref| { |
@@ -75,7 +68,7 @@ fn structure_node(node: &SyntaxNode) -> Option<StructureNode> { | |||
75 | } | 68 | } |
76 | 69 | ||
77 | fn decl_with_detail<N: NameOwner + AttrsOwner>( | 70 | fn decl_with_detail<N: NameOwner + AttrsOwner>( |
78 | node: N, | 71 | node: &N, |
79 | detail: Option<String>, | 72 | detail: Option<String>, |
80 | ) -> Option<StructureNode> { | 73 | ) -> Option<StructureNode> { |
81 | let name = node.name()?; | 74 | let name = node.name()?; |
@@ -124,7 +117,7 @@ fn structure_node(node: &SyntaxNode) -> Option<StructureNode> { | |||
124 | collapse_ws(ret_type.syntax(), &mut detail); | 117 | collapse_ws(ret_type.syntax(), &mut detail); |
125 | } | 118 | } |
126 | 119 | ||
127 | decl_with_detail(it, Some(detail)) | 120 | decl_with_detail(&it, Some(detail)) |
128 | }, | 121 | }, |
129 | ast::Struct(it) => decl(it), | 122 | ast::Struct(it) => decl(it), |
130 | ast::Union(it) => decl(it), | 123 | ast::Union(it) => decl(it), |
@@ -132,13 +125,10 @@ fn structure_node(node: &SyntaxNode) -> Option<StructureNode> { | |||
132 | ast::Variant(it) => decl(it), | 125 | ast::Variant(it) => decl(it), |
133 | ast::Trait(it) => decl(it), | 126 | ast::Trait(it) => decl(it), |
134 | ast::Module(it) => decl(it), | 127 | ast::Module(it) => decl(it), |
135 | ast::TypeAlias(it) => { | 128 | ast::TypeAlias(it) => decl_with_type_ref(&it, it.type_ref()), |
136 | let ty = it.type_ref(); | 129 | ast::RecordField(it) => decl_with_type_ref(&it, it.ty()), |
137 | decl_with_type_ref(it, ty) | 130 | ast::Const(it) => decl_with_type_ref(&it, it.ty()), |
138 | }, | 131 | ast::Static(it) => decl_with_type_ref(&it, it.ty()), |
139 | ast::RecordField(it) => decl_with_ascription(it), | ||
140 | ast::Const(it) => decl_with_ascription(it), | ||
141 | ast::Static(it) => decl_with_ascription(it), | ||
142 | ast::Impl(it) => { | 132 | ast::Impl(it) => { |
143 | let target_type = it.target_type()?; | 133 | let target_type = it.target_type()?; |
144 | let target_trait = it.target_trait(); | 134 | let target_trait = it.target_trait(); |
diff --git a/crates/ra_ide/src/inlay_hints.rs b/crates/ra_ide/src/inlay_hints.rs index 714ba6bd9..4bbbcd258 100644 --- a/crates/ra_ide/src/inlay_hints.rs +++ b/crates/ra_ide/src/inlay_hints.rs | |||
@@ -2,7 +2,7 @@ use hir::{Adt, Callable, HirDisplay, Semantics, Type}; | |||
2 | use ra_ide_db::RootDatabase; | 2 | use ra_ide_db::RootDatabase; |
3 | use ra_prof::profile; | 3 | use ra_prof::profile; |
4 | use ra_syntax::{ | 4 | use ra_syntax::{ |
5 | ast::{self, ArgListOwner, AstNode, TypeAscriptionOwner}, | 5 | ast::{self, ArgListOwner, AstNode}, |
6 | match_ast, Direction, NodeOrToken, SmolStr, SyntaxKind, TextRange, T, | 6 | match_ast, Direction, NodeOrToken, SmolStr, SyntaxKind, TextRange, T, |
7 | }; | 7 | }; |
8 | use stdx::to_lower_snake_case; | 8 | use stdx::to_lower_snake_case; |
@@ -230,10 +230,10 @@ fn should_not_display_type_hint(db: &RootDatabase, bind_pat: &ast::BindPat, pat_ | |||
230 | match_ast! { | 230 | match_ast! { |
231 | match node { | 231 | match node { |
232 | ast::LetStmt(it) => { | 232 | ast::LetStmt(it) => { |
233 | return it.ascribed_type().is_some() | 233 | return it.ty().is_some() |
234 | }, | 234 | }, |
235 | ast::Param(it) => { | 235 | ast::Param(it) => { |
236 | return it.ascribed_type().is_some() | 236 | return it.ty().is_some() |
237 | }, | 237 | }, |
238 | ast::MatchArm(_it) => { | 238 | ast::MatchArm(_it) => { |
239 | return pat_is_enum_variant(db, bind_pat, pat_ty); | 239 | return pat_is_enum_variant(db, bind_pat, pat_ty); |
diff --git a/crates/ra_ide/src/references/rename.rs b/crates/ra_ide/src/references/rename.rs index d330109f1..31654bf79 100644 --- a/crates/ra_ide/src/references/rename.rs +++ b/crates/ra_ide/src/references/rename.rs | |||
@@ -7,7 +7,8 @@ use ra_ide_db::{ | |||
7 | RootDatabase, | 7 | RootDatabase, |
8 | }; | 8 | }; |
9 | use ra_syntax::{ | 9 | use ra_syntax::{ |
10 | algo::find_node_at_offset, ast, ast::NameOwner, ast::TypeAscriptionOwner, | 10 | algo::find_node_at_offset, |
11 | ast::{self, NameOwner}, | ||
11 | lex_single_valid_syntax_kind, match_ast, AstNode, SyntaxKind, SyntaxNode, SyntaxToken, | 12 | lex_single_valid_syntax_kind, match_ast, AstNode, SyntaxKind, SyntaxNode, SyntaxToken, |
12 | }; | 13 | }; |
13 | use ra_text_edit::TextEdit; | 14 | use ra_text_edit::TextEdit; |
@@ -155,7 +156,7 @@ fn rename_to_self( | |||
155 | return None; // method already has self param | 156 | return None; // method already has self param |
156 | } | 157 | } |
157 | let first_param = params.params().next()?; | 158 | let first_param = params.params().next()?; |
158 | let mutable = match first_param.ascribed_type() { | 159 | let mutable = match first_param.ty() { |
159 | Some(ast::TypeRef::ReferenceType(rt)) => rt.mut_token().is_some(), | 160 | Some(ast::TypeRef::ReferenceType(rt)) => rt.mut_token().is_some(), |
160 | _ => return None, // not renaming other types | 161 | _ => return None, // not renaming other types |
161 | }; | 162 | }; |