move index_resolve to symbol index

This commit is contained in:
Aleksey Kladov 2019-02-08 14:09:57 +03:00
parent 5173c6295b
commit e4a6343e47
4 changed files with 11 additions and 14 deletions

View file

@ -20,7 +20,7 @@ pub(crate) fn call_info(db: &RootDatabase, position: FilePosition) -> Option<Cal
let name_ref = calling_node.name_ref()?;
// Resolve the function's NameRef (NOTE: this isn't entirely accurate).
let file_symbols = db.index_resolve(name_ref);
let file_symbols = crate::symbol_index::index_resolve(db, name_ref);
let symbol = file_symbols
.into_iter()
.find(|it| it.ptr.kind() == FN_DEF)?;

View file

@ -118,8 +118,7 @@ pub(crate) fn reference_definition(
}
}
// If that fails try the index based approach.
let navs = db
.index_resolve(name_ref)
let navs = crate::symbol_index::index_resolve(db, name_ref)
.into_iter()
.map(NavigationTarget::from_symbol)
.collect();

View file

@ -2,13 +2,11 @@ use hir::{
self, Problem, source_binder
};
use ra_ide_api_light::{self, LocalEdit, Severity};
use ra_syntax::ast;
use ra_db::SourceDatabase;
use crate::{
db, Diagnostic, FileId, FilePosition, FileSystemEdit,
Query, SourceChange, SourceFileEdit,
symbol_index::FileSymbol,
SourceChange, SourceFileEdit,
};
impl db::RootDatabase {
@ -75,14 +73,6 @@ impl db::RootDatabase {
};
res
}
pub(crate) fn index_resolve(&self, name_ref: &ast::NameRef) -> Vec<FileSymbol> {
let name = name_ref.text();
let mut query = Query::new(name.to_string());
query.exact();
query.limit(4);
crate::symbol_index::world_symbols(self, query)
}
}
impl SourceChange {

View file

@ -109,6 +109,14 @@ pub(crate) fn world_symbols(db: &RootDatabase, query: Query) -> Vec<FileSymbol>
query.search(&buf)
}
pub(crate) fn index_resolve(db: &RootDatabase, name_ref: &ast::NameRef) -> Vec<FileSymbol> {
let name = name_ref.text();
let mut query = Query::new(name.to_string());
query.exact();
query.limit(4);
crate::symbol_index::world_symbols(db, query)
}
#[derive(Default, Debug)]
pub(crate) struct SymbolIndex {
symbols: Vec<FileSymbol>,