about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNicolas Guichard <nicolas.guichard@kdab.com>2023-12-08 16:52:15 +0100
committerNicolas Guichard <nicolas.guichard@kdab.com>2024-01-03 10:56:12 +0100
commit566bb77f915d6c0b89f9db4aaf15e958bd6eb404 (patch)
treea3c232f3c4cc31377a95dce5a9bd489bb17891d3
parentb24914970f0ff6dc35ec3d6a2a2b02b0b2602d74 (diff)
downloadrust-566bb77f915d6c0b89f9db4aaf15e958bd6eb404.tar.gz
rust-566bb77f915d6c0b89f9db4aaf15e958bd6eb404.zip
scip: Populate SymbolInformation::signature_documentation
-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 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<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 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(),
                         };