From 256ec6e8d4ac46b2569713d2ffe92d102595f5d2 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 8 Jan 2019 18:27:44 +0300 Subject: introduce CallInfo --- crates/ra_analysis/src/call_info.rs | 15 +++++++++++++-- crates/ra_analysis/src/lib.rs | 13 +++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) (limited to 'crates/ra_analysis') diff --git a/crates/ra_analysis/src/call_info.rs b/crates/ra_analysis/src/call_info.rs index a31a54ef6..8da19a648 100644 --- a/crates/ra_analysis/src/call_info.rs +++ b/crates/ra_analysis/src/call_info.rs @@ -7,10 +7,21 @@ use ra_syntax::{ use ra_editor::find_node_at_offset; use hir::FnSignatureInfo; -use crate::{FilePosition, db::RootDatabase}; +use crate::{FilePosition, CallInfo, db::RootDatabase}; + +pub(crate) fn call_info(db: &RootDatabase, position: FilePosition) -> Cancelable> { + let (sig_info, active_parameter) = ctry!(call_info_(db, position)?); + let res = CallInfo { + label: sig_info.label, + doc: sig_info.doc, + parameters: sig_info.params, + active_parameter, + }; + Ok(Some(res)) +} /// Computes parameter information for the given call expression. -pub(crate) fn call_info( +fn call_info_( db: &RootDatabase, position: FilePosition, ) -> Cancelable)>> { diff --git a/crates/ra_analysis/src/lib.rs b/crates/ra_analysis/src/lib.rs index 9192f66e8..4fa6750aa 100644 --- a/crates/ra_analysis/src/lib.rs +++ b/crates/ra_analysis/src/lib.rs @@ -273,6 +273,14 @@ impl RangeInfo { } } +#[derive(Debug)] +pub struct CallInfo { + pub label: String, + pub doc: Option, + pub parameters: Vec, + pub active_parameter: Option, +} + /// `AnalysisHost` stores the current state of the world. #[derive(Debug, Default)] pub struct AnalysisHost { @@ -393,10 +401,7 @@ impl Analysis { hover::hover(&*self.db, position) } /// Computes parameter information for the given call expression. - pub fn call_info( - &self, - position: FilePosition, - ) -> Cancelable)>> { + pub fn call_info(&self, position: FilePosition) -> Cancelable> { call_info::call_info(&*self.db, position) } /// Returns a `mod name;` declaration which created the current module. -- cgit v1.2.3