introduce CallInfo

This commit is contained in:
Aleksey Kladov
2019-01-08 18:27:44 +03:00
parent e6a4383bb4
commit 256ec6e8d4
3 changed files with 33 additions and 23 deletions

View File

@@ -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<Option<CallInfo>> {
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<Option<(FnSignatureInfo, Option<usize>)>> {

View File

@@ -273,6 +273,14 @@ impl<T> RangeInfo<T> {
}
}
#[derive(Debug)]
pub struct CallInfo {
pub label: String,
pub doc: Option<String>,
pub parameters: Vec<String>,
pub active_parameter: Option<usize>,
}
/// `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<Option<(FnSignatureInfo, Option<usize>)>> {
pub fn call_info(&self, position: FilePosition) -> Cancelable<Option<CallInfo>> {
call_info::call_info(&*self.db, position)
}
/// Returns a `mod name;` declaration which created the current module.