From 6bdf505d7cb5c248093c2ba174d3ac9609515804 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Tue, 23 Mar 2021 17:39:43 +0100 Subject: simplify --- crates/hir/src/lib.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'crates/hir') diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index bdc1ad852..eb7865c84 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -973,6 +973,14 @@ impl SelfParam { Access::Owned => "self", } } + + pub fn source(&self, db: &dyn HirDatabase) -> Option> { + let InFile { file_id, value } = Function::from(self.func).source(db)?; + value + .param_list() + .and_then(|params| params.self_param()) + .map(|value| InFile { file_id, value }) + } } impl HasVisibility for Function { @@ -1348,6 +1356,13 @@ impl Local { } } + pub fn as_self_param(self, db: &dyn HirDatabase) -> Option { + match self.parent { + DefWithBodyId::FunctionId(func) if self.is_self(db) => Some(SelfParam { func }), + _ => None, + } + } + // FIXME: why is this an option? It shouldn't be? pub fn name(self, db: &dyn HirDatabase) -> Option { let body = db.body(self.parent); -- cgit v1.2.3