Skip to content

Commit 57da3df

Browse files
committed
Explicitly remember desugard pats
1 parent 5ffddc4 commit 57da3df

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

crates/ra_hir_def/src/body.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ pub struct BodySourceMap {
151151
expr_map: FxHashMap<ExprSource, ExprId>,
152152
expr_map_back: ArenaMap<ExprId, Result<ExprSource, SyntheticSyntax>>,
153153
pat_map: FxHashMap<PatSource, PatId>,
154-
pat_map_back: ArenaMap<PatId, PatSource>,
154+
pat_map_back: ArenaMap<PatId, Result<PatSource, SyntheticSyntax>>,
155155
field_map: FxHashMap<(ExprId, usize), AstPtr<ast::RecordField>>,
156156
expansions: FxHashMap<InFile<AstPtr<ast::MacroCall>>, HirFileId>,
157157
}
@@ -242,7 +242,7 @@ impl BodySourceMap {
242242
}
243243

244244
pub fn pat_syntax(&self, pat: PatId) -> Result<PatSource, SyntheticSyntax> {
245-
self.pat_map_back.get(pat).copied().ok_or(SyntheticSyntax)
245+
self.pat_map_back[pat]
246246
}
247247

248248
pub fn node_pat(&self, node: InFile<&ast::Pat>) -> Option<PatId> {

crates/ra_hir_def/src/body/lower.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use ra_syntax::{
1414
};
1515
use test_utils::tested_by;
1616

17-
use super::ExprSource;
17+
use super::{ExprSource, PatSource};
1818
use crate::{
1919
adt::StructKind,
2020
body::{Body, BodySourceMap, Expander, PatPtr, SyntheticSyntax},
@@ -133,14 +133,18 @@ where
133133
}
134134

135135
fn alloc_pat(&mut self, pat: Pat, ptr: PatPtr) -> PatId {
136-
let id = self.body.pats.alloc(pat);
137136
let src = self.expander.to_source(ptr);
137+
let id = self.make_pat(pat, Ok(src));
138138
self.source_map.pat_map.insert(src, id);
139-
self.source_map.pat_map_back.insert(id, src);
140139
id
141140
}
142141
fn missing_pat(&mut self) -> PatId {
143-
self.body.pats.alloc(Pat::Missing)
142+
self.make_pat(Pat::Missing, Err(SyntheticSyntax))
143+
}
144+
fn make_pat(&mut self, pat: Pat, src: Result<PatSource, SyntheticSyntax>) -> PatId {
145+
let id = self.body.pats.alloc(pat);
146+
self.source_map.pat_map_back.insert(id, src);
147+
id
144148
}
145149

146150
fn collect_expr(&mut self, expr: ast::Expr) -> ExprId {

0 commit comments

Comments
 (0)