summaryrefslogtreecommitdiff
path: root/cli/lsp/tsc.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp/tsc.rs')
-rw-r--r--cli/lsp/tsc.rs49
1 files changed, 42 insertions, 7 deletions
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs
index 40efcb99a..a2189f52c 100644
--- a/cli/lsp/tsc.rs
+++ b/cli/lsp/tsc.rs
@@ -46,6 +46,8 @@ use log::warn;
use once_cell::sync::Lazy;
use regex::Captures;
use regex::Regex;
+use serde_repr::Deserialize_repr;
+use serde_repr::Serialize_repr;
use std::cmp;
use std::collections::HashMap;
use std::collections::HashSet;
@@ -623,7 +625,7 @@ impl TextSpan {
}
}
-#[derive(Debug, Deserialize, Clone)]
+#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct SymbolDisplayPart {
text: String,
@@ -785,7 +787,7 @@ impl QuickInfo {
}
}
-#[derive(Debug, Clone, Deserialize)]
+#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct DocumentSpan {
text_span: TextSpan,
@@ -1618,6 +1620,7 @@ pub struct CombinedCodeActions {
#[serde(rename_all = "camelCase")]
pub struct ReferenceEntry {
// is_write_access: bool,
+ #[serde(default)]
pub is_definition: bool,
// is_in_string: Option<bool>,
#[serde(flatten)]
@@ -1816,14 +1819,14 @@ impl CallHierarchyOutgoingCall {
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CompletionEntryDetails {
- // name: String,
- // kind: ScriptElementKind,
- // kind_modifiers: String,
display_parts: Vec<SymbolDisplayPart>,
documentation: Option<Vec<SymbolDisplayPart>>,
tags: Option<Vec<JsDocTagInfo>>,
+ // name: String,
+ // kind: ScriptElementKind,
+ // kind_modifiers: String,
// code_actions: Option<Vec<CodeAction>>,
- // source: Option<Vec<SymbolDisplayPart>>,
+ // source_display: Option<Vec<SymbolDisplayPart>>,
}
impl CompletionEntryDetails {
@@ -1871,10 +1874,23 @@ impl CompletionEntryDetails {
}
}
+#[derive(Debug, Deserialize_repr, Serialize_repr)]
+#[repr(u32)]
+pub enum CompletionInfoFlags {
+ None = 0,
+ MayIncludeAutoImports = 1,
+ IsImportStatementCompletion = 2,
+ IsContinuation = 4,
+ ResolvedModuleSpecifiers = 8,
+ ResolvedModuleSpecifiersBeyondLimit = 16,
+ MayIncludeMethodSnippets = 32,
+}
+
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CompletionInfo {
entries: Vec<CompletionEntry>,
+ flags: Option<CompletionInfoFlags>,
is_global_completion: bool,
is_member_completion: bool,
is_new_identifier_location: bool,
@@ -1946,16 +1962,26 @@ pub struct CompletionEntry {
#[serde(skip_serializing_if = "Option::is_none")]
insert_text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
+ is_snippet: Option<bool>,
+ #[serde(skip_serializing_if = "Option::is_none")]
replacement_span: Option<TextSpan>,
#[serde(skip_serializing_if = "Option::is_none")]
has_action: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
source: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
+ source_display: Option<Vec<SymbolDisplayPart>>,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ label_details: Option<CompletionEntryLabelDetails>,
+ #[serde(skip_serializing_if = "Option::is_none")]
is_recommended: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
is_from_unchecked_file: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
+ is_package_json_import: Option<bool>,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ is_import_statement_completion: Option<bool>,
+ #[serde(skip_serializing_if = "Option::is_none")]
data: Option<Value>,
}
@@ -2140,6 +2166,15 @@ impl CompletionEntry {
}
}
+#[derive(Debug, Default, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+struct CompletionEntryLabelDetails {
+ #[serde(skip_serializing_if = "Option::is_none")]
+ detail: Option<String>,
+ #[serde(skip_serializing_if = "Option::is_none")]
+ description: Option<String>,
+}
+
#[derive(Debug, Deserialize)]
pub enum OutliningSpanKind {
#[serde(rename = "comment")]
@@ -3560,7 +3595,7 @@ mod tests {
// You might have found this assertion starts failing after upgrading TypeScript.
// Just update the new number of assets (declaration files) for this number.
- assert_eq!(assets.len(), 66);
+ assert_eq!(assets.len(), 69);
// get some notification when the size of the assets grows
let mut total_size = 0;