diff options
author | Aleksey Kladov <[email protected]> | 2019-11-12 08:48:34 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-11-12 08:49:16 +0000 |
commit | fc055281a5c1c81a6df0e4c10cde71e4799bd329 (patch) | |
tree | 9bb7d02b5cf78fa43650110c1c7189343b144d15 /crates/ra_hir/src/expr.rs | |
parent | aa0646be29e80db3d8ab3a797b9fadd6c8b2c6e1 (diff) |
Minor cleanup
Diffstat (limited to 'crates/ra_hir/src/expr.rs')
-rw-r--r-- | crates/ra_hir/src/expr.rs | 61 |
1 files changed, 30 insertions, 31 deletions
diff --git a/crates/ra_hir/src/expr.rs b/crates/ra_hir/src/expr.rs index 6e23197a4..53da7f0bf 100644 --- a/crates/ra_hir/src/expr.rs +++ b/crates/ra_hir/src/expr.rs | |||
@@ -75,6 +75,36 @@ pub struct BodySourceMap { | |||
75 | } | 75 | } |
76 | 76 | ||
77 | impl Body { | 77 | impl Body { |
78 | pub(crate) fn body_with_source_map_query( | ||
79 | db: &impl HirDatabase, | ||
80 | def: DefWithBody, | ||
81 | ) -> (Arc<Body>, Arc<BodySourceMap>) { | ||
82 | let mut params = None; | ||
83 | |||
84 | let (file_id, body) = match def { | ||
85 | DefWithBody::Function(f) => { | ||
86 | let src = f.source(db); | ||
87 | params = src.ast.param_list(); | ||
88 | (src.file_id, src.ast.body().map(ast::Expr::from)) | ||
89 | } | ||
90 | DefWithBody::Const(c) => { | ||
91 | let src = c.source(db); | ||
92 | (src.file_id, src.ast.body()) | ||
93 | } | ||
94 | DefWithBody::Static(s) => { | ||
95 | let src = s.source(db); | ||
96 | (src.file_id, src.ast.body()) | ||
97 | } | ||
98 | }; | ||
99 | |||
100 | let (body, source_map) = lower::lower(db, def.resolver(db), file_id, def, params, body); | ||
101 | (Arc::new(body), Arc::new(source_map)) | ||
102 | } | ||
103 | |||
104 | pub(crate) fn body_query(db: &impl HirDatabase, def: DefWithBody) -> Arc<Body> { | ||
105 | db.body_with_source_map(def).0 | ||
106 | } | ||
107 | |||
78 | pub fn params(&self) -> &[PatId] { | 108 | pub fn params(&self) -> &[PatId] { |
79 | &self.params | 109 | &self.params |
80 | } | 110 | } |
@@ -542,34 +572,3 @@ impl Pat { | |||
542 | } | 572 | } |
543 | } | 573 | } |
544 | } | 574 | } |
545 | |||
546 | // Queries | ||
547 | pub(crate) fn body_with_source_map_query( | ||
548 | db: &impl HirDatabase, | ||
549 | def: DefWithBody, | ||
550 | ) -> (Arc<Body>, Arc<BodySourceMap>) { | ||
551 | let mut params = None; | ||
552 | |||
553 | let (file_id, body) = match def { | ||
554 | DefWithBody::Function(f) => { | ||
555 | let src = f.source(db); | ||
556 | params = src.ast.param_list(); | ||
557 | (src.file_id, src.ast.body().map(ast::Expr::from)) | ||
558 | } | ||
559 | DefWithBody::Const(c) => { | ||
560 | let src = c.source(db); | ||
561 | (src.file_id, src.ast.body()) | ||
562 | } | ||
563 | DefWithBody::Static(s) => { | ||
564 | let src = s.source(db); | ||
565 | (src.file_id, src.ast.body()) | ||
566 | } | ||
567 | }; | ||
568 | |||
569 | let (body, source_map) = lower::lower(db, def.resolver(db), file_id, def, params, body); | ||
570 | (Arc::new(body), Arc::new(source_map)) | ||
571 | } | ||
572 | |||
573 | pub(crate) fn body_hir_query(db: &impl HirDatabase, def: DefWithBody) -> Arc<Body> { | ||
574 | db.body_with_source_map(def).0 | ||
575 | } | ||