Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/lib.rs')
| -rw-r--r-- | crates/hir/src/lib.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index 8bab7c1f3e..37bb2e1997 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -1506,10 +1506,15 @@ impl Param { db.function_data(self.func.id).params[self.idx].0.clone() } - pub fn as_local(&self, db: &dyn HirDatabase) -> Local { + pub fn as_local(&self, db: &dyn HirDatabase) -> Option<Local> { let parent = DefWithBodyId::FunctionId(self.func.into()); let body = db.body(parent); - Local { parent, pat_id: body.params[self.idx] } + let pat_id = body.params[self.idx]; + if let Pat::Bind { .. } = &body[pat_id] { + Some(Local { parent, pat_id: body.params[self.idx] }) + } else { + None + } } pub fn pattern_source(&self, db: &dyn HirDatabase) -> Option<ast::Pat> { |