diff --git a/crates/ide/src/static_index.rs b/crates/ide/src/static_index.rs index 32b052ba463..ff13bd54a37 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, pub display_name: Option, pub enclosing_moniker: Option, + pub signature: Option, } #[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 fd882ef1d9b..8123c4b7150 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(), };