diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-03-16 13:14:48 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2021-03-16 13:14:48 +0000 |
commit | c49b5b7468a9954af86fd1724276261f396aba5d (patch) | |
tree | f9b9126cd0cc9a2829de3cdb20f681b354fbe67b /crates/ide/src/references.rs | |
parent | 1a82af3527e476d52410ff4dfd2fb4c57466abcb (diff) | |
parent | f5a81ec4683613bd62624811733345d627f2127b (diff) |
Merge #7498
7498: Clone for update r=matklad a=matklad
rowan counterpart https://github.com/rust-analyzer/rowan/pull/93
#6857
Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ide/src/references.rs')
-rw-r--r-- | crates/ide/src/references.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/crates/ide/src/references.rs b/crates/ide/src/references.rs index ec7c7686d..e8a5666bc 100644 --- a/crates/ide/src/references.rs +++ b/crates/ide/src/references.rs | |||
@@ -148,14 +148,15 @@ fn decl_access(def: &Definition, syntax: &SyntaxNode, range: TextRange) -> Optio | |||
148 | 148 | ||
149 | fn get_name_of_item_declaration(syntax: &SyntaxNode, position: FilePosition) -> Option<ast::Name> { | 149 | fn get_name_of_item_declaration(syntax: &SyntaxNode, position: FilePosition) -> Option<ast::Name> { |
150 | let token = syntax.token_at_offset(position.offset).right_biased()?; | 150 | let token = syntax.token_at_offset(position.offset).right_biased()?; |
151 | let token_parent = token.parent()?; | ||
151 | let kind = token.kind(); | 152 | let kind = token.kind(); |
152 | if kind == T![;] { | 153 | if kind == T![;] { |
153 | ast::Struct::cast(token.parent()) | 154 | ast::Struct::cast(token_parent) |
154 | .filter(|struct_| struct_.field_list().is_none()) | 155 | .filter(|struct_| struct_.field_list().is_none()) |
155 | .and_then(|struct_| struct_.name()) | 156 | .and_then(|struct_| struct_.name()) |
156 | } else if kind == T!['{'] { | 157 | } else if kind == T!['{'] { |
157 | match_ast! { | 158 | match_ast! { |
158 | match (token.parent()) { | 159 | match token_parent { |
159 | ast::RecordFieldList(rfl) => match_ast! { | 160 | ast::RecordFieldList(rfl) => match_ast! { |
160 | match (rfl.syntax().parent()?) { | 161 | match (rfl.syntax().parent()?) { |
161 | ast::Variant(it) => it.name(), | 162 | ast::Variant(it) => it.name(), |
@@ -169,7 +170,7 @@ fn get_name_of_item_declaration(syntax: &SyntaxNode, position: FilePosition) -> | |||
169 | } | 170 | } |
170 | } | 171 | } |
171 | } else if kind == T!['('] { | 172 | } else if kind == T!['('] { |
172 | let tfl = ast::TupleFieldList::cast(token.parent())?; | 173 | let tfl = ast::TupleFieldList::cast(token_parent)?; |
173 | match_ast! { | 174 | match_ast! { |
174 | match (tfl.syntax().parent()?) { | 175 | match (tfl.syntax().parent()?) { |
175 | ast::Variant(it) => it.name(), | 176 | ast::Variant(it) => it.name(), |