mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-05 11:48:30 +00:00
fix todo
This commit is contained in:
parent
daaba4be17
commit
d0cf4306bd
@ -97,9 +97,7 @@ pub(crate) fn reference_definition(
|
|||||||
{
|
{
|
||||||
let resolved = module.resolve_path(db, &path);
|
let resolved = module.resolve_path(db, &path);
|
||||||
if let Some(def_id) = resolved.take_types().or(resolved.take_values()) {
|
if let Some(def_id) = resolved.take_types().or(resolved.take_values()) {
|
||||||
if let Some(target) = NavigationTarget::from_def(db, def_id) {
|
return Exact(NavigationTarget::from_def(db, def_id));
|
||||||
return Exact(target);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,62 +112,37 @@ impl NavigationTarget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO once Def::Item is gone, this should be able to always return a NavigationTarget
|
pub(crate) fn from_def(db: &RootDatabase, module_def: hir::ModuleDef) -> NavigationTarget {
|
||||||
pub(crate) fn from_def(
|
|
||||||
db: &RootDatabase,
|
|
||||||
module_def: hir::ModuleDef,
|
|
||||||
) -> Option<NavigationTarget> {
|
|
||||||
match module_def {
|
match module_def {
|
||||||
hir::ModuleDef::Module(module) => Some(NavigationTarget::from_module(db, module)),
|
hir::ModuleDef::Module(module) => NavigationTarget::from_module(db, module),
|
||||||
hir::ModuleDef::Function(func) => Some(NavigationTarget::from_function(db, func)),
|
hir::ModuleDef::Function(func) => NavigationTarget::from_function(db, func),
|
||||||
hir::ModuleDef::Struct(s) => {
|
hir::ModuleDef::Struct(s) => {
|
||||||
let (file_id, node) = s.source(db);
|
let (file_id, node) = s.source(db);
|
||||||
Some(NavigationTarget::from_named(
|
NavigationTarget::from_named(file_id.original_file(db), &*node)
|
||||||
file_id.original_file(db),
|
|
||||||
&*node,
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
hir::ModuleDef::Const(s) => {
|
hir::ModuleDef::Const(s) => {
|
||||||
let (file_id, node) = s.source(db);
|
let (file_id, node) = s.source(db);
|
||||||
Some(NavigationTarget::from_named(
|
NavigationTarget::from_named(file_id.original_file(db), &*node)
|
||||||
file_id.original_file(db),
|
|
||||||
&*node,
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
hir::ModuleDef::Static(s) => {
|
hir::ModuleDef::Static(s) => {
|
||||||
let (file_id, node) = s.source(db);
|
let (file_id, node) = s.source(db);
|
||||||
Some(NavigationTarget::from_named(
|
NavigationTarget::from_named(file_id.original_file(db), &*node)
|
||||||
file_id.original_file(db),
|
|
||||||
&*node,
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
hir::ModuleDef::Enum(e) => {
|
hir::ModuleDef::Enum(e) => {
|
||||||
let (file_id, node) = e.source(db);
|
let (file_id, node) = e.source(db);
|
||||||
Some(NavigationTarget::from_named(
|
NavigationTarget::from_named(file_id.original_file(db), &*node)
|
||||||
file_id.original_file(db),
|
|
||||||
&*node,
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
hir::ModuleDef::EnumVariant(var) => {
|
hir::ModuleDef::EnumVariant(var) => {
|
||||||
let (file_id, node) = var.source(db);
|
let (file_id, node) = var.source(db);
|
||||||
Some(NavigationTarget::from_named(
|
NavigationTarget::from_named(file_id.original_file(db), &*node)
|
||||||
file_id.original_file(db),
|
|
||||||
&*node,
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
hir::ModuleDef::Trait(e) => {
|
hir::ModuleDef::Trait(e) => {
|
||||||
let (file_id, node) = e.source(db);
|
let (file_id, node) = e.source(db);
|
||||||
Some(NavigationTarget::from_named(
|
NavigationTarget::from_named(file_id.original_file(db), &*node)
|
||||||
file_id.original_file(db),
|
|
||||||
&*node,
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
hir::ModuleDef::Type(e) => {
|
hir::ModuleDef::Type(e) => {
|
||||||
let (file_id, node) = e.source(db);
|
let (file_id, node) = e.source(db);
|
||||||
Some(NavigationTarget::from_named(
|
NavigationTarget::from_named(file_id.original_file(db), &*node)
|
||||||
file_id.original_file(db),
|
|
||||||
&*node,
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user