From 444e52e519a06e5ac397edf6fa2f4f2e06537e4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Wed, 22 May 2019 19:49:22 +0300 Subject: Move NameRef classification logic out of reference_definition --- crates/ra_ide_api/src/display/navigation_target.rs | 30 ++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'crates/ra_ide_api/src/display') diff --git a/crates/ra_ide_api/src/display/navigation_target.rs b/crates/ra_ide_api/src/display/navigation_target.rs index 7ea336c50..1c694cbc9 100644 --- a/crates/ra_ide_api/src/display/navigation_target.rs +++ b/crates/ra_ide_api/src/display/navigation_target.rs @@ -5,7 +5,7 @@ use ra_syntax::{ ast::{self, NameOwner, VisibilityOwner, TypeAscriptionOwner}, algo::visit::{visitor, Visitor}, }; -use hir::{ModuleSource, FieldSource, ImplItem, Either}; +use hir::{ModuleSource, FieldSource, ImplItem}; use crate::{FileSymbol, db::RootDatabase}; @@ -77,17 +77,12 @@ impl NavigationTarget { pub(crate) fn from_pat( db: &RootDatabase, file_id: FileId, - pat: Either, AstPtr>, + pat: AstPtr, ) -> NavigationTarget { let file = db.parse(file_id); - let (name, full_range) = match pat { - Either::A(pat) => match pat.to_node(file.syntax()).kind() { - ast::PatKind::BindPat(pat) => { - return NavigationTarget::from_bind_pat(file_id, &pat) - } - _ => ("_".into(), pat.syntax_node_ptr().range()), - }, - Either::B(slf) => ("self".into(), slf.syntax_node_ptr().range()), + let (name, full_range) = match pat.to_node(file.syntax()).kind() { + ast::PatKind::BindPat(pat) => return NavigationTarget::from_bind_pat(file_id, &pat), + _ => ("_".into(), pat.syntax_node_ptr().range()), }; NavigationTarget { file_id, @@ -99,6 +94,21 @@ impl NavigationTarget { } } + pub(crate) fn from_self_param( + file_id: FileId, + par: AstPtr, + ) -> NavigationTarget { + let (name, full_range) = ("self".into(), par.syntax_node_ptr().range()); + NavigationTarget { + file_id, + name, + full_range, + focus_range: None, + kind: NAME, + container_name: None, + } + } + pub(crate) fn from_module(db: &RootDatabase, module: hir::Module) -> NavigationTarget { let (file_id, source) = module.definition_source(db); let file_id = file_id.as_original_file(); -- cgit v1.2.3