mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-30 05:45:12 +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(),
|
name: decl_name.text(),
|
||||||
range: decl_name.syntax().range(),
|
range: decl_name.syntax().range(),
|
||||||
kind: MODULE,
|
kind: MODULE,
|
||||||
|
ptr: None,
|
||||||
}])
|
}])
|
||||||
}
|
}
|
||||||
/// Returns `Vec` for the same reason as `parent_module`
|
/// Returns `Vec` for the same reason as `parent_module`
|
||||||
|
@ -158,6 +159,7 @@ impl db::RootDatabase {
|
||||||
name: entry.name().to_string().into(),
|
name: entry.name().to_string().into(),
|
||||||
range: entry.ptr().range(),
|
range: entry.ptr().range(),
|
||||||
kind: NAME,
|
kind: NAME,
|
||||||
|
ptr: None,
|
||||||
});
|
});
|
||||||
return Ok(Some(rr));
|
return Ok(Some(rr));
|
||||||
};
|
};
|
||||||
|
@ -185,6 +187,7 @@ impl db::RootDatabase {
|
||||||
name,
|
name,
|
||||||
range: TextRange::offset_len(0.into(), 0.into()),
|
range: TextRange::offset_len(0.into(), 0.into()),
|
||||||
kind: MODULE,
|
kind: MODULE,
|
||||||
|
ptr: None,
|
||||||
};
|
};
|
||||||
rr.resolves_to.push(symbol);
|
rr.resolves_to.push(symbol);
|
||||||
return Ok(Some(rr));
|
return Ok(Some(rr));
|
||||||
|
|
|
@ -41,7 +41,7 @@ pub use ra_editor::{
|
||||||
pub use hir::FnSignatureInfo;
|
pub use hir::FnSignatureInfo;
|
||||||
|
|
||||||
pub use ra_db::{
|
pub use ra_db::{
|
||||||
Canceled, Cancelable, FilePosition, FileRange,
|
Canceled, Cancelable, FilePosition, FileRange, LocalSyntaxPtr,
|
||||||
CrateGraph, CrateId, SourceRootId, FileId, SyntaxDatabase, FilesDatabase
|
CrateGraph, CrateId, SourceRootId, FileId, SyntaxDatabase, FilesDatabase
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -225,6 +225,8 @@ pub struct NavigationTarget {
|
||||||
name: SmolStr,
|
name: SmolStr,
|
||||||
kind: SyntaxKind,
|
kind: SyntaxKind,
|
||||||
range: TextRange,
|
range: TextRange,
|
||||||
|
// Should be DefId ideally
|
||||||
|
ptr: Option<LocalSyntaxPtr>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl NavigationTarget {
|
impl NavigationTarget {
|
||||||
|
@ -234,6 +236,7 @@ impl NavigationTarget {
|
||||||
kind: symbol.ptr.kind(),
|
kind: symbol.ptr.kind(),
|
||||||
file_id,
|
file_id,
|
||||||
range: symbol.ptr.range(),
|
range: symbol.ptr.range(),
|
||||||
|
ptr: Some(symbol.ptr.clone()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn name(&self) -> &SmolStr {
|
pub fn name(&self) -> &SmolStr {
|
||||||
|
|
|
@ -25,7 +25,7 @@ fn approximate_resolve_works_in_items() {
|
||||||
assert_eq_dbg(
|
assert_eq_dbg(
|
||||||
r#"ReferenceResolution {
|
r#"ReferenceResolution {
|
||||||
reference_range: [23; 26),
|
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,
|
&symbols,
|
||||||
);
|
);
|
||||||
|
@ -46,7 +46,7 @@ fn test_resolve_module() {
|
||||||
assert_eq_dbg(
|
assert_eq_dbg(
|
||||||
r#"ReferenceResolution {
|
r#"ReferenceResolution {
|
||||||
reference_range: [4; 7),
|
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,
|
&symbols,
|
||||||
);
|
);
|
||||||
|
@ -64,7 +64,7 @@ fn test_resolve_module() {
|
||||||
assert_eq_dbg(
|
assert_eq_dbg(
|
||||||
r#"ReferenceResolution {
|
r#"ReferenceResolution {
|
||||||
reference_range: [4; 7),
|
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,
|
&symbols,
|
||||||
);
|
);
|
||||||
|
@ -107,7 +107,7 @@ fn test_resolve_parent_module() {
|
||||||
);
|
);
|
||||||
let symbols = analysis.parent_module(pos).unwrap();
|
let symbols = analysis.parent_module(pos).unwrap();
|
||||||
assert_eq_dbg(
|
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,
|
&symbols,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ fn test_resolve_parent_module_for_inline() {
|
||||||
);
|
);
|
||||||
let symbols = analysis.parent_module(pos).unwrap();
|
let symbols = analysis.parent_module(pos).unwrap();
|
||||||
assert_eq_dbg(
|
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,
|
&symbols,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -190,7 +190,7 @@ pub fn handle_workspace_symbol(
|
||||||
let mut res = Vec::new();
|
let mut res = Vec::new();
|
||||||
for nav in world.analysis().symbol_search(query)? {
|
for nav in world.analysis().symbol_search(query)? {
|
||||||
let info = SymbolInformation {
|
let info = SymbolInformation {
|
||||||
name: nav.name().into(),
|
name: nav.name().to_string(),
|
||||||
kind: nav.kind().conv(),
|
kind: nav.kind().conv(),
|
||||||
location: nav.try_conv_with(world)?,
|
location: nav.try_conv_with(world)?,
|
||||||
container_name: None,
|
container_name: None,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue