mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-29 13:25:09 +00:00
use LocalPtr in navigation target
This commit is contained in:
parent
267a89bca2
commit
03ea6bcbff
4 changed files with 13 additions and 7 deletions
|
@ -121,6 +121,7 @@ impl db::RootDatabase {
|
|||
name: decl_name.text(),
|
||||
range: decl_name.syntax().range(),
|
||||
kind: MODULE,
|
||||
ptr: None,
|
||||
}])
|
||||
}
|
||||
/// Returns `Vec` for the same reason as `parent_module`
|
||||
|
@ -158,6 +159,7 @@ impl db::RootDatabase {
|
|||
name: entry.name().to_string().into(),
|
||||
range: entry.ptr().range(),
|
||||
kind: NAME,
|
||||
ptr: None,
|
||||
});
|
||||
return Ok(Some(rr));
|
||||
};
|
||||
|
@ -185,6 +187,7 @@ impl db::RootDatabase {
|
|||
name,
|
||||
range: TextRange::offset_len(0.into(), 0.into()),
|
||||
kind: MODULE,
|
||||
ptr: None,
|
||||
};
|
||||
rr.resolves_to.push(symbol);
|
||||
return Ok(Some(rr));
|
||||
|
|
|
@ -41,7 +41,7 @@ pub use ra_editor::{
|
|||
pub use hir::FnSignatureInfo;
|
||||
|
||||
pub use ra_db::{
|
||||
Canceled, Cancelable, FilePosition, FileRange,
|
||||
Canceled, Cancelable, FilePosition, FileRange, LocalSyntaxPtr,
|
||||
CrateGraph, CrateId, SourceRootId, FileId, SyntaxDatabase, FilesDatabase
|
||||
};
|
||||
|
||||
|
@ -225,6 +225,8 @@ pub struct NavigationTarget {
|
|||
name: SmolStr,
|
||||
kind: SyntaxKind,
|
||||
range: TextRange,
|
||||
// Should be DefId ideally
|
||||
ptr: Option<LocalSyntaxPtr>,
|
||||
}
|
||||
|
||||
impl NavigationTarget {
|
||||
|
@ -234,6 +236,7 @@ impl NavigationTarget {
|
|||
kind: symbol.ptr.kind(),
|
||||
file_id,
|
||||
range: symbol.ptr.range(),
|
||||
ptr: Some(symbol.ptr.clone()),
|
||||
}
|
||||
}
|
||||
pub fn name(&self) -> &SmolStr {
|
||||
|
|
|
@ -25,7 +25,7 @@ fn approximate_resolve_works_in_items() {
|
|||
assert_eq_dbg(
|
||||
r#"ReferenceResolution {
|
||||
reference_range: [23; 26),
|
||||
resolves_to: [NavigationTarget { file_id: FileId(1), symbol: FileSymbol { name: "Foo", node_range: [0; 11), kind: STRUCT_DEF } }]
|
||||
resolves_to: [NavigationTarget { file_id: FileId(1), name: "Foo", kind: STRUCT_DEF, range: [0; 11), ptr: Some(LocalSyntaxPtr { range: [0; 11), kind: STRUCT_DEF }) }]
|
||||
}"#,
|
||||
&symbols,
|
||||
);
|
||||
|
@ -46,7 +46,7 @@ fn test_resolve_module() {
|
|||
assert_eq_dbg(
|
||||
r#"ReferenceResolution {
|
||||
reference_range: [4; 7),
|
||||
resolves_to: [NavigationTarget { file_id: FileId(2), symbol: FileSymbol { name: "foo", node_range: [0; 0), kind: MODULE } }]
|
||||
resolves_to: [NavigationTarget { file_id: FileId(2), name: "foo", kind: MODULE, range: [0; 0), ptr: None }]
|
||||
}"#,
|
||||
&symbols,
|
||||
);
|
||||
|
@ -64,7 +64,7 @@ fn test_resolve_module() {
|
|||
assert_eq_dbg(
|
||||
r#"ReferenceResolution {
|
||||
reference_range: [4; 7),
|
||||
resolves_to: [NavigationTarget { file_id: FileId(2), symbol: FileSymbol { name: "foo", node_range: [0; 0), kind: MODULE } }]
|
||||
resolves_to: [NavigationTarget { file_id: FileId(2), name: "foo", kind: MODULE, range: [0; 0), ptr: None }]
|
||||
}"#,
|
||||
&symbols,
|
||||
);
|
||||
|
@ -107,7 +107,7 @@ fn test_resolve_parent_module() {
|
|||
);
|
||||
let symbols = analysis.parent_module(pos).unwrap();
|
||||
assert_eq_dbg(
|
||||
r#"[NavigationTarget { file_id: FileId(1), symbol: FileSymbol { name: "foo", node_range: [4; 7), kind: MODULE } }]"#,
|
||||
r#"[NavigationTarget { file_id: FileId(1), name: "foo", kind: MODULE, range: [4; 7), ptr: None }]"#,
|
||||
&symbols,
|
||||
);
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ fn test_resolve_parent_module_for_inline() {
|
|||
);
|
||||
let symbols = analysis.parent_module(pos).unwrap();
|
||||
assert_eq_dbg(
|
||||
r#"[NavigationTarget { file_id: FileId(1), symbol: FileSymbol { name: "bar", node_range: [18; 21), kind: MODULE } }]"#,
|
||||
r#"[NavigationTarget { file_id: FileId(1), name: "bar", kind: MODULE, range: [18; 21), ptr: None }]"#,
|
||||
&symbols,
|
||||
);
|
||||
}
|
||||
|
|
|
@ -190,7 +190,7 @@ pub fn handle_workspace_symbol(
|
|||
let mut res = Vec::new();
|
||||
for nav in world.analysis().symbol_search(query)? {
|
||||
let info = SymbolInformation {
|
||||
name: nav.name().into(),
|
||||
name: nav.name().to_string(),
|
||||
kind: nav.kind().conv(),
|
||||
location: nav.try_conv_with(world)?,
|
||||
container_name: None,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue