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:
bors[bot] 2020-04-16 19:01:30 +00:00 committed by GitHub
commit a4cda3efbb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 7 additions and 9 deletions

View file

@ -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(),

View file

@ -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),

View file

@ -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)
} }

View file

@ -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 })