X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=crates%2Fide%2Fsrc%2Fcall_hierarchy.rs;h=5a8cda8fb3dda19e0c4ea6c5c0f4b0fbc72073f9;hb=6bf674c8e4ddcccb4fc7eaa8754bdc431c6cad33;hp=23bffd564899dad3caff71f13743c074b0a24c4b;hpb=3b3063fb2d1804b3dc42184027ef08073de03fd9;p=rust.git diff --git a/crates/ide/src/call_hierarchy.rs b/crates/ide/src/call_hierarchy.rs index 23bffd56489..5a8cda8fb3d 100644 --- a/crates/ide/src/call_hierarchy.rs +++ b/crates/ide/src/call_hierarchy.rs @@ -1,17 +1,15 @@ //! Entry point for call-hierarchy -use indexmap::IndexMap; - use hir::Semantics; use ide_db::{ defs::{Definition, NameClass, NameRefClass}, helpers::pick_best_token, search::FileReference, - RootDatabase, + FxIndexMap, RootDatabase, }; -use syntax::{ast, AstNode, SyntaxKind::NAME, TextRange}; +use syntax::{ast, AstNode, SyntaxKind::IDENT, TextRange}; -use crate::{display::TryToNav, goto_definition, FilePosition, NavigationTarget, RangeInfo}; +use crate::{goto_definition, FilePosition, NavigationTarget, RangeInfo, TryToNav}; #[derive(Debug, Clone)] pub struct CallItem { @@ -81,14 +79,14 @@ pub(crate) fn outgoing_calls(db: &RootDatabase, position: FilePosition) -> Optio let file = sema.parse(file_id); let file = file.syntax(); let token = pick_best_token(file.token_at_offset(position.offset), |kind| match kind { - NAME => 1, + IDENT => 1, _ => 0, })?; let mut calls = CallLocations::default(); sema.descend_into_macros(token) .into_iter() - .filter_map(|it| it.ancestors().nth(1).and_then(ast::Item::cast)) + .filter_map(|it| it.parent_ancestors().nth(1).and_then(ast::Item::cast)) .filter_map(|item| match item { ast::Item::Const(c) => c.body().map(|it| it.syntax().descendants()), ast::Item::Fn(f) => f.body().map(|it| it.syntax().descendants()), @@ -125,7 +123,7 @@ pub(crate) fn outgoing_calls(db: &RootDatabase, position: FilePosition) -> Optio #[derive(Default)] struct CallLocations { - funcs: IndexMap>, + funcs: FxIndexMap>, } impl CallLocations {