mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 06:11:35 +00:00
Merge #3994
3994: Don't expose SyntaxNodePtr impl details r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
commit
a4cda3efbb
4 changed files with 7 additions and 9 deletions
|
@ -175,7 +175,7 @@ impl ToNav for FileSymbol {
|
||||||
NavigationTarget {
|
NavigationTarget {
|
||||||
file_id: self.file_id,
|
file_id: self.file_id,
|
||||||
name: self.name.clone(),
|
name: self.name.clone(),
|
||||||
kind: self.ptr.kind(),
|
kind: self.kind,
|
||||||
full_range: self.ptr.range(),
|
full_range: self.ptr.range(),
|
||||||
focus_range: self.name_range,
|
focus_range: self.name_range,
|
||||||
container_name: self.container_name.clone(),
|
container_name: self.container_name.clone(),
|
||||||
|
|
|
@ -285,7 +285,7 @@ impl Query {
|
||||||
let (start, end) = SymbolIndex::map_value_to_range(indexed_value.value);
|
let (start, end) = SymbolIndex::map_value_to_range(indexed_value.value);
|
||||||
|
|
||||||
for symbol in &symbol_index.symbols[start..end] {
|
for symbol in &symbol_index.symbols[start..end] {
|
||||||
if self.only_types && !is_type(symbol.ptr.kind()) {
|
if self.only_types && !is_type(symbol.kind) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if self.exact && symbol.name != self.query {
|
if self.exact && symbol.name != self.query {
|
||||||
|
@ -312,6 +312,7 @@ fn is_type(kind: SyntaxKind) -> bool {
|
||||||
pub struct FileSymbol {
|
pub struct FileSymbol {
|
||||||
pub file_id: FileId,
|
pub file_id: FileId,
|
||||||
pub name: SmolStr,
|
pub name: SmolStr,
|
||||||
|
pub kind: SyntaxKind,
|
||||||
pub ptr: SyntaxNodePtr,
|
pub ptr: SyntaxNodePtr,
|
||||||
pub name_range: Option<TextRange>,
|
pub name_range: Option<TextRange>,
|
||||||
pub container_name: Option<SmolStr>,
|
pub container_name: Option<SmolStr>,
|
||||||
|
@ -377,6 +378,7 @@ fn to_symbol(node: &SyntaxNode) -> Option<(SmolStr, SyntaxNodePtr, TextRange)> {
|
||||||
fn to_file_symbol(node: &SyntaxNode, file_id: FileId) -> Option<FileSymbol> {
|
fn to_file_symbol(node: &SyntaxNode, file_id: FileId) -> Option<FileSymbol> {
|
||||||
to_symbol(node).map(move |(name, ptr, name_range)| FileSymbol {
|
to_symbol(node).map(move |(name, ptr, name_range)| FileSymbol {
|
||||||
name,
|
name,
|
||||||
|
kind: node.kind(),
|
||||||
ptr,
|
ptr,
|
||||||
file_id,
|
file_id,
|
||||||
name_range: Some(name_range),
|
name_range: Some(name_range),
|
||||||
|
|
|
@ -351,7 +351,7 @@ fn with_children(
|
||||||
// FIXME: use a more elegant way to re-fetch the node (#1185), make
|
// FIXME: use a more elegant way to re-fetch the node (#1185), make
|
||||||
// `range` private afterwards
|
// `range` private afterwards
|
||||||
let mut ptr = SyntaxNodePtr::new(parent);
|
let mut ptr = SyntaxNodePtr::new(parent);
|
||||||
ptr.range = TextRange::offset_len(ptr.range().start(), len);
|
ptr.range = TextRange::offset_len(ptr.range.start(), len);
|
||||||
ptr.to_node(&new_root_node)
|
ptr.to_node(&new_root_node)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,12 +34,8 @@ impl SyntaxNodePtr {
|
||||||
self.range
|
self.range
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn kind(&self) -> SyntaxKind {
|
|
||||||
self.kind
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn cast<N: AstNode>(self) -> Option<AstPtr<N>> {
|
pub fn cast<N: AstNode>(self) -> Option<AstPtr<N>> {
|
||||||
if !N::can_cast(self.kind()) {
|
if !N::can_cast(self.kind) {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
Some(AstPtr { raw: self, _ty: PhantomData })
|
Some(AstPtr { raw: self, _ty: PhantomData })
|
||||||
|
@ -88,7 +84,7 @@ impl<N: AstNode> AstPtr<N> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn cast<U: AstNode>(self) -> Option<AstPtr<U>> {
|
pub fn cast<U: AstNode>(self) -> Option<AstPtr<U>> {
|
||||||
if !U::can_cast(self.raw.kind()) {
|
if !U::can_cast(self.raw.kind) {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
Some(AstPtr { raw: self.raw, _ty: PhantomData })
|
Some(AstPtr { raw: self.raw, _ty: PhantomData })
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue