Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/semantics/source_to_def.rs')
-rw-r--r--crates/hir/src/semantics/source_to_def.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/crates/hir/src/semantics/source_to_def.rs b/crates/hir/src/semantics/source_to_def.rs
index f7528d3db1..084b5d77d6 100644
--- a/crates/hir/src/semantics/source_to_def.rs
+++ b/crates/hir/src/semantics/source_to_def.rs
@@ -354,8 +354,10 @@ impl SourceToDefCtx<'_, '_> {
let src = src.cloned().map(ast::Pat::from);
let pat_id = source_map.node_pat(src.as_ref())?;
// the pattern could resolve to a constant, verify that this is not the case
- if let crate::Pat::Bind { id, .. } = store[pat_id.as_pat()?] {
- let parent_infer = semantics.infer_body_for_expr_or_pat(container, store, pat_id)?;
+ let pat_id = pat_id.as_pat()?;
+ if let crate::Pat::Bind { id, .. } = store[pat_id] {
+ let parent_infer =
+ semantics.infer_body_for_expr_or_pat(container, store, pat_id.into())?;
Some(crate::Local { parent: container, parent_infer, binding_id: id })
} else {
None