Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/ide/src/static_index.rs2
-rw-r--r--crates/rust-analyzer/src/cli/scip.rs9
2 files changed, 10 insertions, 1 deletions
diff --git a/crates/ide/src/static_index.rs b/crates/ide/src/static_index.rs
index 32b052ba46..ff13bd54a3 100644
--- a/crates/ide/src/static_index.rs
+++ b/crates/ide/src/static_index.rs
@@ -48,6 +48,7 @@ pub struct TokenStaticData {
pub moniker: Option<MonikerResult>,
pub display_name: Option<String>,
pub enclosing_moniker: Option<MonikerResult>,
+ pub signature: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
@@ -178,6 +179,7 @@ impl StaticIndex<'_> {
enclosing_moniker: current_crate
.zip(def.enclosing_definition(self.db))
.and_then(|(cc, enclosing_def)| def_to_moniker(self.db, enclosing_def, cc)),
+ signature: def.label(self.db),
});
self.def_map.insert(def, it);
it
diff --git a/crates/rust-analyzer/src/cli/scip.rs b/crates/rust-analyzer/src/cli/scip.rs
index fd882ef1d9..8123c4b715 100644
--- a/crates/rust-analyzer/src/cli/scip.rs
+++ b/crates/rust-analyzer/src/cli/scip.rs
@@ -143,6 +143,13 @@ impl flags::Scip {
.map(|hover| hover.markup.as_str())
.filter(|it| !it.is_empty())
.map(|it| vec![it.to_owned()]);
+ let signature_documentation =
+ token.signature.clone().map(|text| scip_types::Document {
+ relative_path: relative_path.clone(),
+ language: "rust".to_string(),
+ text,
+ ..Default::default()
+ });
let symbol_info = scip_types::SymbolInformation {
symbol: symbol.clone(),
documentation: documentation.unwrap_or_default(),
@@ -150,7 +157,7 @@ impl flags::Scip {
special_fields: Default::default(),
kind: Default::default(),
display_name: token.display_name.clone().unwrap_or_default(),
- signature_documentation: Default::default(),
+ signature_documentation: signature_documentation.into(),
enclosing_symbol: enclosing_symbol.unwrap_or_default(),
};