remove Cancelable from navigation target

This commit is contained in:
Aleksey Kladov 2019-01-15 18:50:16 +03:00
parent 9dd4099d93
commit f1367e0370
11 changed files with 29 additions and 42 deletions

View file

@ -1,4 +1,4 @@
use ra_db::{FileId, Cancelable};
use ra_db::FileId;
use ra_syntax::{
SyntaxNode, AstNode, SmolStr, TextRange, ast,
SyntaxKind::{self, NAME},
@ -69,47 +69,35 @@ impl NavigationTarget {
}
}
pub(crate) fn from_module(
db: &RootDatabase,
module: hir::Module,
) -> Cancelable<NavigationTarget> {
pub(crate) fn from_module(db: &RootDatabase, module: hir::Module) -> NavigationTarget {
let (file_id, source) = module.definition_source(db);
let name = module
.name(db)
.map(|it| it.to_string().into())
.unwrap_or_default();
let res = match source {
match source {
ModuleSource::SourceFile(node) => {
NavigationTarget::from_syntax(file_id, name, None, node.syntax())
}
ModuleSource::Module(node) => {
NavigationTarget::from_syntax(file_id, name, None, node.syntax())
}
};
Ok(res)
}
}
pub(crate) fn from_module_to_decl(
db: &RootDatabase,
module: hir::Module,
) -> Cancelable<NavigationTarget> {
pub(crate) fn from_module_to_decl(db: &RootDatabase, module: hir::Module) -> NavigationTarget {
let name = module
.name(db)
.map(|it| it.to_string().into())
.unwrap_or_default();
if let Some((file_id, source)) = module.declaration_source(db) {
return Ok(NavigationTarget::from_syntax(
file_id,
name,
None,
source.syntax(),
));
return NavigationTarget::from_syntax(file_id, name, None, source.syntax());
}
NavigationTarget::from_module(db, module)
}
// TODO once Def::Item is gone, this should be able to always return a NavigationTarget
pub(crate) fn from_def(db: &RootDatabase, def: Def) -> Cancelable<Option<NavigationTarget>> {
pub(crate) fn from_def(db: &RootDatabase, def: Def) -> Option<NavigationTarget> {
let res = match def {
Def::Struct(s) => {
let (file_id, node) = s.source(db);
@ -124,7 +112,7 @@ impl NavigationTarget {
NavigationTarget::from_named(file_id.original_file(db), &*node)
}
Def::Function(f) => {
let (file_id, node) = f.source(db)?;
let (file_id, node) = f.source(db);
NavigationTarget::from_named(file_id.original_file(db), &*node)
}
Def::Trait(f) => {
@ -143,10 +131,10 @@ impl NavigationTarget {
let (file_id, node) = f.source(db);
NavigationTarget::from_named(file_id.original_file(db), &*node)
}
Def::Module(m) => NavigationTarget::from_module(db, m)?,
Def::Item => return Ok(None),
Def::Module(m) => NavigationTarget::from_module(db, m),
Def::Item => return None,
};
Ok(Some(res))
Some(res)
}
#[cfg(test)]