mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 12:54:58 +00:00
remove Cancelable from navigation target
This commit is contained in:
parent
9dd4099d93
commit
f1367e0370
11 changed files with 29 additions and 42 deletions
|
@ -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)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue