mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-15 09:27:27 +00:00
Merge #532
532: fix go to parent module r=matklad a=matklad Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
commit
fa6e4b7978
2 changed files with 21 additions and 2 deletions
|
@ -89,6 +89,25 @@ impl NavigationTarget {
|
||||||
Ok(res)
|
Ok(res)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn from_module_to_decl(
|
||||||
|
db: &RootDatabase,
|
||||||
|
module: hir::Module,
|
||||||
|
) -> Cancelable<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(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
NavigationTarget::from_module(db, module)
|
||||||
|
}
|
||||||
|
|
||||||
// TODO once Def::Item is gone, this should be able to always return a NavigationTarget
|
// 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) -> Cancelable<Option<NavigationTarget>> {
|
||||||
let res = match def {
|
let res = match def {
|
||||||
|
|
|
@ -12,7 +12,7 @@ pub(crate) fn parent_module(
|
||||||
None => return Ok(Vec::new()),
|
None => return Ok(Vec::new()),
|
||||||
Some(it) => it,
|
Some(it) => it,
|
||||||
};
|
};
|
||||||
let nav = NavigationTarget::from_module(db, module)?;
|
let nav = NavigationTarget::from_module_to_decl(db, module)?;
|
||||||
Ok(vec![nav])
|
Ok(vec![nav])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ mod tests {
|
||||||
",
|
",
|
||||||
);
|
);
|
||||||
let nav = analysis.parent_module(pos).unwrap().pop().unwrap();
|
let nav = analysis.parent_module(pos).unwrap().pop().unwrap();
|
||||||
nav.assert_match("foo SOURCE_FILE FileId(2) [0; 10)");
|
nav.assert_match("foo MODULE FileId(1) [0; 8)");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Reference in a new issue