mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-30 05:45:12 +00:00
Migrate trait & type to new ids
This commit is contained in:
parent
00ba70a095
commit
0f2f3a21e7
13 changed files with 104 additions and 186 deletions
|
@ -3,7 +3,7 @@ use ra_syntax::{
|
|||
SyntaxNode, AstNode, SmolStr, TextRange, ast,
|
||||
SyntaxKind::{self, NAME},
|
||||
};
|
||||
use hir::{Def, ModuleSource};
|
||||
use hir::{ModuleSource};
|
||||
|
||||
use crate::{FileSymbol, db::RootDatabase};
|
||||
|
||||
|
@ -106,63 +106,60 @@ impl NavigationTarget {
|
|||
db: &RootDatabase,
|
||||
module_def: hir::ModuleDef,
|
||||
) -> Option<NavigationTarget> {
|
||||
let def = match module_def {
|
||||
hir::ModuleDef::Def(def_id) => def_id.resolve(db),
|
||||
hir::ModuleDef::Module(module) => {
|
||||
return Some(NavigationTarget::from_module(db, module));
|
||||
}
|
||||
hir::ModuleDef::Function(func) => {
|
||||
return Some(NavigationTarget::from_function(db, func));
|
||||
}
|
||||
match module_def {
|
||||
hir::ModuleDef::Def(_) => return None,
|
||||
hir::ModuleDef::Module(module) => Some(NavigationTarget::from_module(db, module)),
|
||||
hir::ModuleDef::Function(func) => Some(NavigationTarget::from_function(db, func)),
|
||||
hir::ModuleDef::Struct(s) => {
|
||||
let (file_id, node) = s.source(db);
|
||||
return Some(NavigationTarget::from_named(
|
||||
Some(NavigationTarget::from_named(
|
||||
file_id.original_file(db),
|
||||
&*node,
|
||||
));
|
||||
))
|
||||
}
|
||||
hir::ModuleDef::Const(s) => {
|
||||
let (file_id, node) = s.source(db);
|
||||
return Some(NavigationTarget::from_named(
|
||||
Some(NavigationTarget::from_named(
|
||||
file_id.original_file(db),
|
||||
&*node,
|
||||
));
|
||||
))
|
||||
}
|
||||
hir::ModuleDef::Static(s) => {
|
||||
let (file_id, node) = s.source(db);
|
||||
return Some(NavigationTarget::from_named(
|
||||
Some(NavigationTarget::from_named(
|
||||
file_id.original_file(db),
|
||||
&*node,
|
||||
));
|
||||
))
|
||||
}
|
||||
hir::ModuleDef::Enum(e) => {
|
||||
let (file_id, node) = e.source(db);
|
||||
return Some(NavigationTarget::from_named(
|
||||
Some(NavigationTarget::from_named(
|
||||
file_id.original_file(db),
|
||||
&*node,
|
||||
));
|
||||
))
|
||||
}
|
||||
hir::ModuleDef::EnumVariant(var) => {
|
||||
let (file_id, node) = var.source(db);
|
||||
return Some(NavigationTarget::from_named(
|
||||
Some(NavigationTarget::from_named(
|
||||
file_id.original_file(db),
|
||||
&*node,
|
||||
));
|
||||
))
|
||||
}
|
||||
};
|
||||
|
||||
let res = match def {
|
||||
Def::Trait(f) => {
|
||||
let (file_id, node) = f.source(db);
|
||||
NavigationTarget::from_named(file_id.original_file(db), &*node)
|
||||
hir::ModuleDef::Trait(e) => {
|
||||
let (file_id, node) = e.source(db);
|
||||
Some(NavigationTarget::from_named(
|
||||
file_id.original_file(db),
|
||||
&*node,
|
||||
))
|
||||
}
|
||||
Def::Type(f) => {
|
||||
let (file_id, node) = f.source(db);
|
||||
NavigationTarget::from_named(file_id.original_file(db), &*node)
|
||||
hir::ModuleDef::Type(e) => {
|
||||
let (file_id, node) = e.source(db);
|
||||
Some(NavigationTarget::from_named(
|
||||
file_id.original_file(db),
|
||||
&*node,
|
||||
))
|
||||
}
|
||||
Def::Item => return None,
|
||||
};
|
||||
Some(res)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue