reduce visibility

This commit is contained in:
Aleksey Kladov 2019-10-29 15:25:46 +03:00
parent d095d9273e
commit 2a5254c106
4 changed files with 9 additions and 20 deletions

View file

@ -80,7 +80,7 @@ pub use self::{
path::{Path, PathKind}, path::{Path, PathKind},
resolve::ScopeDef, resolve::ScopeDef,
source_binder::{PathResolution, ScopeEntryWithSyntax, SourceAnalyzer}, source_binder::{PathResolution, ScopeEntryWithSyntax, SourceAnalyzer},
source_id::{AstIdMap, ErasedFileAstId}, source_id::AstIdMap,
ty::{ ty::{
display::HirDisplay, ApplicationTy, CallableDef, Substs, TraitRef, Ty, TypeCtor, TypeWalk, display::HirDisplay, ApplicationTy, CallableDef, Substs, TraitRef, Ty, TypeCtor, TypeWalk,
}, },

View file

@ -1,6 +1,6 @@
//! FIXME: write short doc here //! FIXME: write short doc here
pub use hir_expand::{ pub use hir_expand::{
ast_id_map::{AstIdMap, ErasedFileAstId, FileAstId}, ast_id_map::{AstIdMap, FileAstId},
AstId, AstId,
}; };

View file

@ -8,11 +8,10 @@
use std::{ use std::{
hash::{Hash, Hasher}, hash::{Hash, Hasher},
marker::PhantomData, marker::PhantomData,
ops,
}; };
use ra_arena::{impl_arena_id, Arena, RawId}; use ra_arena::{impl_arena_id, Arena, RawId};
use ra_syntax::{ast, AstNode, SyntaxNode, SyntaxNodePtr}; use ra_syntax::{ast, AstNode, AstPtr, SyntaxNode, SyntaxNodePtr};
/// `AstId` points to an AST node in a specific file. /// `AstId` points to an AST node in a specific file.
#[derive(Debug)] #[derive(Debug)]
@ -40,14 +39,8 @@ impl<N: AstNode> Hash for FileAstId<N> {
} }
} }
impl<N: AstNode> From<FileAstId<N>> for ErasedFileAstId {
fn from(id: FileAstId<N>) -> Self {
id.raw
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct ErasedFileAstId(RawId); struct ErasedFileAstId(RawId);
impl_arena_id!(ErasedFileAstId); impl_arena_id!(ErasedFileAstId);
/// Maps items' `SyntaxNode`s to `ErasedFileAstId`s and back. /// Maps items' `SyntaxNode`s to `ErasedFileAstId`s and back.
@ -90,18 +83,15 @@ impl AstIdMap {
} }
} }
pub fn get<N: AstNode>(&self, id: FileAstId<N>) -> AstPtr<N> {
self.arena[id.raw].cast::<N>().unwrap()
}
fn alloc(&mut self, item: &SyntaxNode) -> ErasedFileAstId { fn alloc(&mut self, item: &SyntaxNode) -> ErasedFileAstId {
self.arena.alloc(SyntaxNodePtr::new(item)) self.arena.alloc(SyntaxNodePtr::new(item))
} }
} }
impl ops::Index<ErasedFileAstId> for AstIdMap {
type Output = SyntaxNodePtr;
fn index(&self, index: ErasedFileAstId) -> &SyntaxNodePtr {
&self.arena[index]
}
}
/// Walks the subtree in bfs order, calling `f` for each node. /// Walks the subtree in bfs order, calling `f` for each node.
fn bfs(node: &SyntaxNode, mut f: impl FnMut(SyntaxNode)) { fn bfs(node: &SyntaxNode, mut f: impl FnMut(SyntaxNode)) {
let mut curr_layer = vec![node.clone()]; let mut curr_layer = vec![node.clone()];

View file

@ -172,7 +172,6 @@ impl<N: AstNode> AstId<N> {
pub fn to_node(&self, db: &impl AstDatabase) -> N { pub fn to_node(&self, db: &impl AstDatabase) -> N {
let root = db.parse_or_expand(self.file_id).unwrap(); let root = db.parse_or_expand(self.file_id).unwrap();
let node = db.ast_id_map(self.file_id)[self.file_ast_id.into()].to_node(&root); db.ast_id_map(self.file_id).get(self.file_ast_id).to_node(&root)
N::cast(node).unwrap()
} }
} }