diff options
author | Aleksey Kladov <[email protected]> | 2019-10-29 12:20:08 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-10-29 12:20:08 +0000 |
commit | 858dd48af26e851897b2e8d2fbf757f3adfbc92c (patch) | |
tree | 26857e0f415c09173eba4328ed1af2334f00d5a9 /crates/ra_hir_expand/src/ast_id_map.rs | |
parent | 6bf7faf315c57dbec6cb3d5a7c7089016603b309 (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.rs | 14 |
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 { |