aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_expand/src/ast_id_map.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-10-29 12:20:08 +0000
committerAleksey Kladov <[email protected]>2019-10-29 12:20:08 +0000
commit858dd48af26e851897b2e8d2fbf757f3adfbc92c (patch)
tree26857e0f415c09173eba4328ed1af2334f00d5a9 /crates/ra_hir_expand/src/ast_id_map.rs
parent6bf7faf315c57dbec6cb3d5a7c7089016603b309 (diff)
less generics
Diffstat (limited to 'crates/ra_hir_expand/src/ast_id_map.rs')
-rw-r--r--crates/ra_hir_expand/src/ast_id_map.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/crates/ra_hir_expand/src/ast_id_map.rs b/crates/ra_hir_expand/src/ast_id_map.rs
index c3b389102..2f43abe15 100644
--- a/crates/ra_hir_expand/src/ast_id_map.rs
+++ b/crates/ra_hir_expand/src/ast_id_map.rs
@@ -75,17 +75,19 @@ impl AstIdMap {
75 } 75 }
76 76
77 pub fn ast_id<N: AstNode>(&self, item: &N) -> FileAstId<N> { 77 pub fn ast_id<N: AstNode>(&self, item: &N) -> FileAstId<N> {
78 let ptr = SyntaxNodePtr::new(item.syntax()); 78 let raw = self.erased_ast_id(item.syntax());
79 let raw = match self.arena.iter().find(|(_id, i)| **i == ptr) { 79 FileAstId { raw, _ty: PhantomData }
80 }
81 fn erased_ast_id(&self, item: &SyntaxNode) -> ErasedFileAstId {
82 let ptr = SyntaxNodePtr::new(item);
83 match self.arena.iter().find(|(_id, i)| **i == ptr) {
80 Some((it, _)) => it, 84 Some((it, _)) => it,
81 None => panic!( 85 None => panic!(
82 "Can't find {:?} in AstIdMap:\n{:?}", 86 "Can't find {:?} in AstIdMap:\n{:?}",
83 item.syntax(), 87 item,
84 self.arena.iter().map(|(_id, i)| i).collect::<Vec<_>>(), 88 self.arena.iter().map(|(_id, i)| i).collect::<Vec<_>>(),
85 ), 89 ),
86 }; 90 }
87
88 FileAstId { raw, _ty: PhantomData }
89 } 91 }
90 92
91 fn alloc(&mut self, item: &SyntaxNode) -> ErasedFileAstId { 93 fn alloc(&mut self, item: &SyntaxNode) -> ErasedFileAstId {