aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/expr.rs
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2019-01-06 22:57:39 +0000
committerFlorian Diebold <[email protected]>2019-01-06 23:05:19 +0000
commit71f7d82e45145281b9aec5bcdc694524864e552b (patch)
treedab214dd290cfb87c85b56b478a477eeaf4edc6e /crates/ra_hir/src/expr.rs
parentcf49a11263c4d48720250db0c448b97dbec3d8b9 (diff)
Introduce ArenaMap
Diffstat (limited to 'crates/ra_hir/src/expr.rs')
-rw-r--r--crates/ra_hir/src/expr.rs18
1 files changed, 9 insertions, 9 deletions
diff --git a/crates/ra_hir/src/expr.rs b/crates/ra_hir/src/expr.rs
index c87d76735..69144e94f 100644
--- a/crates/ra_hir/src/expr.rs
+++ b/crates/ra_hir/src/expr.rs
@@ -3,7 +3,7 @@ use std::sync::Arc;
3 3
4use rustc_hash::FxHashMap; 4use rustc_hash::FxHashMap;
5 5
6use ra_arena::{Arena, RawId, impl_arena_id}; 6use ra_arena::{Arena, RawId, impl_arena_id, map::ArenaMap};
7use ra_db::{LocalSyntaxPtr, Cancelable}; 7use ra_db::{LocalSyntaxPtr, Cancelable};
8use ra_syntax::{SyntaxNodeRef, ast::{self, AstNode, LoopBodyOwner, ArgListOwner, NameOwner}}; 8use ra_syntax::{SyntaxNodeRef, ast::{self, AstNode, LoopBodyOwner, ArgListOwner, NameOwner}};
9 9
@@ -39,9 +39,9 @@ pub struct Body {
39pub struct BodySyntaxMapping { 39pub struct BodySyntaxMapping {
40 body: Arc<Body>, 40 body: Arc<Body>,
41 expr_syntax_mapping: FxHashMap<LocalSyntaxPtr, ExprId>, 41 expr_syntax_mapping: FxHashMap<LocalSyntaxPtr, ExprId>,
42 expr_syntax_mapping_back: FxHashMap<ExprId, LocalSyntaxPtr>, 42 expr_syntax_mapping_back: ArenaMap<ExprId, LocalSyntaxPtr>,
43 pat_syntax_mapping: FxHashMap<LocalSyntaxPtr, PatId>, 43 pat_syntax_mapping: FxHashMap<LocalSyntaxPtr, PatId>,
44 pat_syntax_mapping_back: FxHashMap<PatId, LocalSyntaxPtr>, 44 pat_syntax_mapping_back: ArenaMap<PatId, LocalSyntaxPtr>,
45} 45}
46 46
47impl Body { 47impl Body {
@@ -72,7 +72,7 @@ impl Index<PatId> for Body {
72 72
73impl BodySyntaxMapping { 73impl BodySyntaxMapping {
74 pub fn expr_syntax(&self, expr: ExprId) -> Option<LocalSyntaxPtr> { 74 pub fn expr_syntax(&self, expr: ExprId) -> Option<LocalSyntaxPtr> {
75 self.expr_syntax_mapping_back.get(&expr).cloned() 75 self.expr_syntax_mapping_back.get(expr).cloned()
76 } 76 }
77 pub fn syntax_expr(&self, ptr: LocalSyntaxPtr) -> Option<ExprId> { 77 pub fn syntax_expr(&self, ptr: LocalSyntaxPtr) -> Option<ExprId> {
78 self.expr_syntax_mapping.get(&ptr).cloned() 78 self.expr_syntax_mapping.get(&ptr).cloned()
@@ -83,7 +83,7 @@ impl BodySyntaxMapping {
83 .cloned() 83 .cloned()
84 } 84 }
85 pub fn pat_syntax(&self, pat: PatId) -> Option<LocalSyntaxPtr> { 85 pub fn pat_syntax(&self, pat: PatId) -> Option<LocalSyntaxPtr> {
86 self.pat_syntax_mapping_back.get(&pat).cloned() 86 self.pat_syntax_mapping_back.get(pat).cloned()
87 } 87 }
88 pub fn syntax_pat(&self, ptr: LocalSyntaxPtr) -> Option<PatId> { 88 pub fn syntax_pat(&self, ptr: LocalSyntaxPtr) -> Option<PatId> {
89 self.pat_syntax_mapping.get(&ptr).cloned() 89 self.pat_syntax_mapping.get(&ptr).cloned()
@@ -334,9 +334,9 @@ struct ExprCollector {
334 exprs: Arena<ExprId, Expr>, 334 exprs: Arena<ExprId, Expr>,
335 pats: Arena<PatId, Pat>, 335 pats: Arena<PatId, Pat>,
336 expr_syntax_mapping: FxHashMap<LocalSyntaxPtr, ExprId>, 336 expr_syntax_mapping: FxHashMap<LocalSyntaxPtr, ExprId>,
337 expr_syntax_mapping_back: FxHashMap<ExprId, LocalSyntaxPtr>, 337 expr_syntax_mapping_back: ArenaMap<ExprId, LocalSyntaxPtr>,
338 pat_syntax_mapping: FxHashMap<LocalSyntaxPtr, PatId>, 338 pat_syntax_mapping: FxHashMap<LocalSyntaxPtr, PatId>,
339 pat_syntax_mapping_back: FxHashMap<PatId, LocalSyntaxPtr>, 339 pat_syntax_mapping_back: ArenaMap<PatId, LocalSyntaxPtr>,
340} 340}
341 341
342impl ExprCollector { 342impl ExprCollector {
@@ -345,9 +345,9 @@ impl ExprCollector {
345 exprs: Arena::default(), 345 exprs: Arena::default(),
346 pats: Arena::default(), 346 pats: Arena::default(),
347 expr_syntax_mapping: FxHashMap::default(), 347 expr_syntax_mapping: FxHashMap::default(),
348 expr_syntax_mapping_back: FxHashMap::default(), 348 expr_syntax_mapping_back: ArenaMap::default(),
349 pat_syntax_mapping: FxHashMap::default(), 349 pat_syntax_mapping: FxHashMap::default(),
350 pat_syntax_mapping_back: FxHashMap::default(), 350 pat_syntax_mapping_back: ArenaMap::default(),
351 } 351 }
352 } 352 }
353 353