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.rs9
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> {