aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/body.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-03-06 14:11:05 +0000
committerAleksey Kladov <[email protected]>2020-03-06 14:11:05 +0000
commit5ffddc4b921685ebd5f9525f7e33913a1d08c04e (patch)
treed75fd7a74f0f95f8ecedb22ba7f1a3480d795981 /crates/ra_hir_def/src/body.rs
parentfb5891c4330e577f5d6891be529141695ce36d4f (diff)
Explicitly remember desugard exprs
Diffstat (limited to 'crates/ra_hir_def/src/body.rs')
-rw-r--r--crates/ra_hir_def/src/body.rs6
1 files changed, 3 insertions, 3 deletions
diff --git a/crates/ra_hir_def/src/body.rs b/crates/ra_hir_def/src/body.rs
index cd9e22c42..e60adc146 100644
--- a/crates/ra_hir_def/src/body.rs
+++ b/crates/ra_hir_def/src/body.rs
@@ -149,14 +149,14 @@ pub type PatSource = InFile<PatPtr>;
149#[derive(Default, Debug, Eq, PartialEq)] 149#[derive(Default, Debug, Eq, PartialEq)]
150pub struct BodySourceMap { 150pub struct BodySourceMap {
151 expr_map: FxHashMap<ExprSource, ExprId>, 151 expr_map: FxHashMap<ExprSource, ExprId>,
152 expr_map_back: ArenaMap<ExprId, ExprSource>, 152 expr_map_back: ArenaMap<ExprId, Result<ExprSource, SyntheticSyntax>>,
153 pat_map: FxHashMap<PatSource, PatId>, 153 pat_map: FxHashMap<PatSource, PatId>,
154 pat_map_back: ArenaMap<PatId, PatSource>, 154 pat_map_back: ArenaMap<PatId, PatSource>,
155 field_map: FxHashMap<(ExprId, usize), AstPtr<ast::RecordField>>, 155 field_map: FxHashMap<(ExprId, usize), AstPtr<ast::RecordField>>,
156 expansions: FxHashMap<InFile<AstPtr<ast::MacroCall>>, HirFileId>, 156 expansions: FxHashMap<InFile<AstPtr<ast::MacroCall>>, HirFileId>,
157} 157}
158 158
159#[derive(Debug)] 159#[derive(Default, Debug, Eq, PartialEq, Clone, Copy)]
160pub struct SyntheticSyntax; 160pub struct SyntheticSyntax;
161 161
162impl Body { 162impl Body {
@@ -223,7 +223,7 @@ impl Index<PatId> for Body {
223 223
224impl BodySourceMap { 224impl BodySourceMap {
225 pub fn expr_syntax(&self, expr: ExprId) -> Result<ExprSource, SyntheticSyntax> { 225 pub fn expr_syntax(&self, expr: ExprId) -> Result<ExprSource, SyntheticSyntax> {
226 self.expr_map_back.get(expr).copied().ok_or(SyntheticSyntax) 226 self.expr_map_back[expr]
227 } 227 }
228 228
229 pub fn node_expr(&self, node: InFile<&ast::Expr>) -> Option<ExprId> { 229 pub fn node_expr(&self, node: InFile<&ast::Expr>) -> Option<ExprId> {