diff options
Diffstat (limited to 'crates/ra_ide_api/src/references.rs')
-rw-r--r-- | crates/ra_ide_api/src/references.rs | 47 |
1 files changed, 4 insertions, 43 deletions
diff --git a/crates/ra_ide_api/src/references.rs b/crates/ra_ide_api/src/references.rs index 9335bc8ca..6a8407c51 100644 --- a/crates/ra_ide_api/src/references.rs +++ b/crates/ra_ide_api/src/references.rs | |||
@@ -1,14 +1,14 @@ | |||
1 | //! FIXME: write short doc here | 1 | //! FIXME: write short doc here |
2 | 2 | ||
3 | use hir::{FromSource, ModuleSource}; | 3 | use hir::ModuleSource; |
4 | use ra_db::{SourceDatabase, SourceDatabaseExt}; | 4 | use ra_db::{SourceDatabase, SourceDatabaseExt}; |
5 | use ra_syntax::{algo::find_node_at_offset, ast, AstNode, AstPtr, SyntaxNode}; | 5 | use ra_syntax::{algo::find_node_at_offset, ast, AstNode, SyntaxNode}; |
6 | use relative_path::{RelativePath, RelativePathBuf}; | 6 | use relative_path::{RelativePath, RelativePathBuf}; |
7 | 7 | ||
8 | use crate::{ | 8 | use crate::{ |
9 | db::RootDatabase, | 9 | db::RootDatabase, |
10 | name_ref_kind::{ | 10 | name_kind::{ |
11 | classify_name_ref, | 11 | classify_name, classify_name_ref, |
12 | NameKind::{self, *}, | 12 | NameKind::{self, *}, |
13 | }, | 13 | }, |
14 | FileId, FilePosition, FileRange, FileSystemEdit, NavigationTarget, RangeInfo, SourceChange, | 14 | FileId, FilePosition, FileRange, FileSystemEdit, NavigationTarget, RangeInfo, SourceChange, |
@@ -64,7 +64,6 @@ pub(crate) fn find_all_refs( | |||
64 | Macro(mac) => NavigationTarget::from_macro_def(db, mac), | 64 | Macro(mac) => NavigationTarget::from_macro_def(db, mac), |
65 | FieldAccess(field) => NavigationTarget::from_field(db, field), | 65 | FieldAccess(field) => NavigationTarget::from_field(db, field), |
66 | AssocItem(assoc) => NavigationTarget::from_assoc_item(db, assoc), | 66 | AssocItem(assoc) => NavigationTarget::from_assoc_item(db, assoc), |
67 | Method(func) => NavigationTarget::from_def_source(db, func), | ||
68 | Def(def) => NavigationTarget::from_def(db, def)?, | 67 | Def(def) => NavigationTarget::from_def(db, def)?, |
69 | SelfType(ref ty) => match ty.as_adt() { | 68 | SelfType(ref ty) => match ty.as_adt() { |
70 | Some((def_id, _)) => NavigationTarget::from_adt_def(db, def_id), | 69 | Some((def_id, _)) => NavigationTarget::from_adt_def(db, def_id), |
@@ -105,44 +104,6 @@ pub(crate) fn find_all_refs( | |||
105 | } | 104 | } |
106 | } | 105 | } |
107 | 106 | ||
108 | fn classify_name(db: &RootDatabase, file_id: FileId, name: &ast::Name) -> Option<NameKind> { | ||
109 | let parent = name.syntax().parent()?; | ||
110 | let file_id = file_id.into(); | ||
111 | |||
112 | if let Some(pat) = ast::BindPat::cast(parent.clone()) { | ||
113 | return Some(Pat(AstPtr::new(&pat))); | ||
114 | } | ||
115 | if let Some(var) = ast::EnumVariant::cast(parent.clone()) { | ||
116 | let src = hir::Source { file_id, ast: var }; | ||
117 | let var = hir::EnumVariant::from_source(db, src)?; | ||
118 | return Some(Def(var.into())); | ||
119 | } | ||
120 | if let Some(field) = ast::RecordFieldDef::cast(parent.clone()) { | ||
121 | let src = hir::Source { file_id, ast: hir::FieldSource::Named(field) }; | ||
122 | let field = hir::StructField::from_source(db, src)?; | ||
123 | return Some(FieldAccess(field)); | ||
124 | } | ||
125 | if let Some(field) = ast::TupleFieldDef::cast(parent.clone()) { | ||
126 | let src = hir::Source { file_id, ast: hir::FieldSource::Pos(field) }; | ||
127 | let field = hir::StructField::from_source(db, src)?; | ||
128 | return Some(FieldAccess(field)); | ||
129 | } | ||
130 | if let Some(_) = parent.parent().and_then(ast::ItemList::cast) { | ||
131 | let ast = ast::ImplItem::cast(parent.clone())?; | ||
132 | let src = hir::Source { file_id, ast }; | ||
133 | let item = hir::AssocItem::from_source(db, src)?; | ||
134 | return Some(AssocItem(item)); | ||
135 | } | ||
136 | if let Some(item) = ast::ModuleItem::cast(parent.clone()) { | ||
137 | let src = hir::Source { file_id, ast: item }; | ||
138 | let def = hir::ModuleDef::from_source(db, src)?; | ||
139 | return Some(Def(def)); | ||
140 | } | ||
141 | // FIXME: TYPE_PARAM, ALIAS, MACRO_CALL; Union | ||
142 | |||
143 | None | ||
144 | } | ||
145 | |||
146 | pub(crate) fn rename( | 107 | pub(crate) fn rename( |
147 | db: &RootDatabase, | 108 | db: &RootDatabase, |
148 | position: FilePosition, | 109 | position: FilePosition, |