aboutsummaryrefslogtreecommitdiff
path: root/helix-dap
diff options
context:
space:
mode:
Diffstat (limited to 'helix-dap')
-rw-r--r--helix-dap/src/types.rs1304
1 files changed, 652 insertions, 652 deletions
diff --git a/helix-dap/src/types.rs b/helix-dap/src/types.rs
index bb73e5e9..26cd69fb 100644
--- a/helix-dap/src/types.rs
+++ b/helix-dap/src/types.rs
@@ -1,652 +1,652 @@
-use serde::{Deserialize, Serialize};
-use serde_json::Value;
-use std::path::PathBuf;
-
-pub trait Request {
- type Arguments: serde::de::DeserializeOwned + serde::Serialize;
- type Result: serde::de::DeserializeOwned + serde::Serialize;
- const COMMAND: &'static str;
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct ColumnDescriptor {
- pub attribute_name: String,
- pub label: String,
- pub format: Option<String>,
- #[serde(rename = "type")]
- pub col_type: Option<String>,
- pub width: Option<usize>,
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct ExceptionBreakpointsFilter {
- pub filter: String,
- pub label: String,
- pub description: Option<String>,
- pub default: Option<bool>,
- pub supports_condition: Option<bool>,
- pub condition_description: Option<String>,
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct DebuggerCapabilities {
- pub supports_configuration_done_request: Option<bool>,
- pub supports_function_breakpoints: Option<bool>,
- pub supports_conditional_breakpoints: Option<bool>,
- pub supports_hit_conditional_breakpoints: Option<bool>,
- pub supports_evaluate_for_hovers: Option<bool>,
- pub supports_step_back: Option<bool>,
- pub supports_set_variable: Option<bool>,
- pub supports_restart_frame: Option<bool>,
- pub supports_goto_targets_request: Option<bool>,
- pub supports_step_in_targets_request: Option<bool>,
- pub supports_completions_request: Option<bool>,
- pub supports_modules_request: Option<bool>,
- pub supports_restart_request: Option<bool>,
- pub supports_exception_options: Option<bool>,
- pub supports_value_formatting_options: Option<bool>,
- pub supports_exception_info_request: Option<bool>,
- pub support_terminate_debuggee: Option<bool>,
- pub support_suspend_debuggee: Option<bool>,
- pub supports_delayed_stack_trace_loading: Option<bool>,
- pub supports_loaded_sources_request: Option<bool>,
- pub supports_log_points: Option<bool>,
- pub supports_terminate_threads_request: Option<bool>,
- pub supports_set_expression: Option<bool>,
- pub supports_terminate_request: Option<bool>,
- pub supports_data_breakpoints: Option<bool>,
- pub supports_read_memory_request: Option<bool>,
- pub supports_write_memory_request: Option<bool>,
- pub supports_disassemble_request: Option<bool>,
- pub supports_cancel_request: Option<bool>,
- pub supports_breakpoint_locations_request: Option<bool>,
- pub supports_clipboard_context: Option<bool>,
- pub supports_stepping_granularity: Option<bool>,
- pub supports_instruction_breakpoints: Option<bool>,
- pub supports_exception_filter_options: Option<bool>,
- pub exception_breakpoint_filters: Option<Vec<ExceptionBreakpointsFilter>>,
- pub completion_trigger_characters: Option<Vec<String>>,
- pub additional_module_columns: Option<Vec<ColumnDescriptor>>,
- pub supported_checksum_algorithms: Option<Vec<String>>,
-}
-
-impl std::ops::Deref for DebuggerCapabilities {
- type Target = Option<bool>;
-
- fn deref(&self) -> &Self::Target {
- &self.supports_exception_options
- }
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct Checksum {
- pub algorithm: String,
- pub checksum: String,
-}
-
-#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct Source {
- pub name: Option<String>,
- pub path: Option<PathBuf>,
- pub source_reference: Option<usize>,
- pub presentation_hint: Option<String>,
- pub origin: Option<String>,
- pub sources: Option<Vec<Source>>,
- pub adapter_data: Option<Value>,
- pub checksums: Option<Vec<Checksum>>,
-}
-
-#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct SourceBreakpoint {
- pub line: usize,
- pub column: Option<usize>,
- pub condition: Option<String>,
- pub hit_condition: Option<String>,
- pub log_message: Option<String>,
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct Breakpoint {
- pub id: Option<usize>,
- pub verified: bool,
- pub message: Option<String>,
- pub source: Option<Source>,
- pub line: Option<usize>,
- pub column: Option<usize>,
- pub end_line: Option<usize>,
- pub end_column: Option<usize>,
- pub instruction_reference: Option<String>,
- pub offset: Option<usize>,
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct StackFrameFormat {
- pub parameters: Option<bool>,
- pub parameter_types: Option<bool>,
- pub parameter_names: Option<bool>,
- pub parameter_values: Option<bool>,
- pub line: Option<bool>,
- pub module: Option<bool>,
- pub include_all: Option<bool>,
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct StackFrame {
- pub id: usize,
- pub name: String,
- pub source: Option<Source>,
- pub line: usize,
- pub column: usize,
- pub end_line: Option<usize>,
- pub end_column: Option<usize>,
- pub can_restart: Option<bool>,
- pub instruction_pointer_reference: Option<String>,
- pub module_id: Option<Value>,
- pub presentation_hint: Option<String>,
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct Thread {
- pub id: usize,
- pub name: String,
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct Scope {
- pub name: String,
- pub presentation_hint: Option<String>,
- pub variables_reference: usize,
- pub named_variables: Option<usize>,
- pub indexed_variables: Option<usize>,
- pub expensive: bool,
- pub source: Option<Source>,
- pub line: Option<usize>,
- pub column: Option<usize>,
- pub end_line: Option<usize>,
- pub end_column: Option<usize>,
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct ValueFormat {
- pub hex: Option<bool>,
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct VariablePresentationHint {
- pub kind: Option<String>,
- pub attributes: Option<Vec<String>>,
- pub visibility: Option<String>,
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct Variable {
- pub name: String,
- pub value: String,
- #[serde(rename = "type")]
- pub data_type: Option<String>,
- pub presentation_hint: Option<VariablePresentationHint>,
- pub evaluate_name: Option<String>,
- pub variables_reference: usize,
- pub named_variables: Option<usize>,
- pub indexed_variables: Option<usize>,
- pub memory_reference: Option<String>,
-}
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub struct Module {
- pub id: String, // TODO: || number
- pub name: String,
- pub path: Option<PathBuf>,
- pub is_optimized: Option<bool>,
- pub is_user_code: Option<bool>,
- pub version: Option<String>,
- pub symbol_status: Option<String>,
- pub symbol_file_path: Option<String>,
- pub date_time_stamp: Option<String>,
- pub address_range: Option<String>,
-}
-
-pub mod requests {
- use super::*;
- #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct InitializeArguments {
- #[serde(rename = "clientID")]
- pub client_id: Option<String>,
- pub client_name: Option<String>,
- #[serde(rename = "adapterID")]
- pub adapter_id: String,
- pub locale: Option<String>,
- #[serde(rename = "linesStartAt1")]
- pub lines_start_at_one: Option<bool>,
- #[serde(rename = "columnsStartAt1")]
- pub columns_start_at_one: Option<bool>,
- pub path_format: Option<String>,
- pub supports_variable_type: Option<bool>,
- pub supports_variable_paging: Option<bool>,
- pub supports_run_in_terminal_request: Option<bool>,
- pub supports_memory_references: Option<bool>,
- pub supports_progress_reporting: Option<bool>,
- pub supports_invalidated_event: Option<bool>,
- }
-
- #[derive(Debug)]
- pub enum Initialize {}
-
- impl Request for Initialize {
- type Arguments = InitializeArguments;
- type Result = DebuggerCapabilities;
- const COMMAND: &'static str = "initialize";
- }
-
- #[derive(Debug)]
- pub enum Launch {}
-
- impl Request for Launch {
- type Arguments = Value;
- type Result = Value;
- const COMMAND: &'static str = "launch";
- }
-
- #[derive(Debug)]
- pub enum Attach {}
-
- impl Request for Attach {
- type Arguments = Value;
- type Result = Value;
- const COMMAND: &'static str = "attach";
- }
-
- #[derive(Debug)]
- pub enum Disconnect {}
-
- impl Request for Disconnect {
- type Arguments = ();
- type Result = ();
- const COMMAND: &'static str = "disconnect";
- }
-
- #[derive(Debug)]
- pub enum ConfigurationDone {}
-
- impl Request for ConfigurationDone {
- type Arguments = ();
- type Result = ();
- const COMMAND: &'static str = "configurationDone";
- }
-
- #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct SetBreakpointsArguments {
- pub source: Source,
- pub breakpoints: Option<Vec<SourceBreakpoint>>,
- // lines is deprecated
- pub source_modified: Option<bool>,
- }
-
- #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct SetBreakpointsResponse {
- pub breakpoints: Option<Vec<Breakpoint>>,
- }
-
- #[derive(Debug)]
- pub enum SetBreakpoints {}
-
- impl Request for SetBreakpoints {
- type Arguments = SetBreakpointsArguments;
- type Result = SetBreakpointsResponse;
- const COMMAND: &'static str = "setBreakpoints";
- }
-
- #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct ContinueArguments {
- pub thread_id: usize,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct ContinueResponse {
- pub all_threads_continued: Option<bool>,
- }
-
- #[derive(Debug)]
- pub enum Continue {}
-
- impl Request for Continue {
- type Arguments = ContinueArguments;
- type Result = ContinueResponse;
- const COMMAND: &'static str = "continue";
- }
-
- #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct StackTraceArguments {
- pub thread_id: usize,
- pub start_frame: Option<usize>,
- pub levels: Option<usize>,
- pub format: Option<StackFrameFormat>,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct StackTraceResponse {
- pub total_frames: Option<usize>,
- pub stack_frames: Vec<StackFrame>,
- }
-
- #[derive(Debug)]
- pub enum StackTrace {}
-
- impl Request for StackTrace {
- type Arguments = StackTraceArguments;
- type Result = StackTraceResponse;
- const COMMAND: &'static str = "stackTrace";
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct ThreadsResponse {
- pub threads: Vec<Thread>,
- }
-
- #[derive(Debug)]
- pub enum Threads {}
-
- impl Request for Threads {
- type Arguments = ();
- type Result = ThreadsResponse;
- const COMMAND: &'static str = "threads";
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct ScopesArguments {
- pub frame_id: usize,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct ScopesResponse {
- pub scopes: Vec<Scope>,
- }
-
- #[derive(Debug)]
- pub enum Scopes {}
-
- impl Request for Scopes {
- type Arguments = ScopesArguments;
- type Result = ScopesResponse;
- const COMMAND: &'static str = "scopes";
- }
-
- #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct VariablesArguments {
- pub variables_reference: usize,
- pub filter: Option<String>,
- pub start: Option<usize>,
- pub count: Option<usize>,
- pub format: Option<ValueFormat>,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct VariablesResponse {
- pub variables: Vec<Variable>,
- }
-
- #[derive(Debug)]
- pub enum Variables {}
-
- impl Request for Variables {
- type Arguments = VariablesArguments;
- type Result = VariablesResponse;
- const COMMAND: &'static str = "variables";
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct StepInArguments {
- pub thread_id: usize,
- pub target_id: Option<usize>,
- pub granularity: Option<String>,
- }
-
- #[derive(Debug)]
- pub enum StepIn {}
-
- impl Request for StepIn {
- type Arguments = StepInArguments;
- type Result = ();
- const COMMAND: &'static str = "stepIn";
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct StepOutArguments {
- pub thread_id: usize,
- pub granularity: Option<String>,
- }
-
- #[derive(Debug)]
- pub enum StepOut {}
-
- impl Request for StepOut {
- type Arguments = StepOutArguments;
- type Result = ();
- const COMMAND: &'static str = "stepOut";
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct NextArguments {
- pub thread_id: usize,
- pub granularity: Option<String>,
- }
-
- #[derive(Debug)]
- pub enum Next {}
-
- impl Request for Next {
- type Arguments = NextArguments;
- type Result = ();
- const COMMAND: &'static str = "next";
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct PauseArguments {
- pub thread_id: usize,
- }
-
- #[derive(Debug)]
- pub enum Pause {}
-
- impl Request for Pause {
- type Arguments = PauseArguments;
- type Result = ();
- const COMMAND: &'static str = "pause";
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct EvaluateArguments {
- pub expression: String,
- pub frame_id: Option<usize>,
- pub context: Option<String>,
- pub format: Option<ValueFormat>,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct EvaluateResponse {
- pub result: String,
- #[serde(rename = "type")]
- pub data_type: Option<String>,
- pub presentation_hint: Option<VariablePresentationHint>,
- pub variables_reference: usize,
- pub named_variables: Option<usize>,
- pub indexed_variables: Option<usize>,
- pub memory_reference: Option<String>,
- }
-
- #[derive(Debug)]
- pub enum Evaluate {}
-
- impl Request for Evaluate {
- type Arguments = EvaluateArguments;
- type Result = EvaluateResponse;
- const COMMAND: &'static str = "evaluate";
- }
-}
-
-// Events
-
-pub mod events {
- use super::*;
-
- #[derive(Debug, Clone, Serialize, Deserialize)]
- #[serde(rename_all = "camelCase")]
- #[serde(tag = "event", content = "body")]
- // seq is omitted as unused and is not sent by some implementations
- pub enum Event {
- Initialized,
- Stopped(Stopped),
- Continued(Continued),
- Exited(Exited),
- Terminated(Terminated),
- Thread(Thread),
- Output(Output),
- Breakpoint(Breakpoint),
- Module(Module),
- LoadedSource(LoadedSource),
- Process(Process),
- Capabilities(Capabilities),
- // ProgressStart(),
- // ProgressUpdate(),
- // ProgressEnd(),
- // Invalidated(),
- Memory(Memory),
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct Stopped {
- pub reason: String,
- pub description: Option<String>,
- pub thread_id: Option<usize>,
- pub preserve_focus_hint: Option<bool>,
- pub text: Option<String>,
- pub all_threads_stopped: Option<bool>,
- pub hit_breakpoint_ids: Option<Vec<usize>>,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct Continued {
- pub thread_id: usize,
- pub all_threads_continued: Option<bool>,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct Exited {
- pub exit_code: usize,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct Terminated {
- pub restart: Option<Value>,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct Thread {
- pub reason: String,
- pub thread_id: usize,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct Output {
- pub output: String,
- pub category: Option<String>,
- pub group: Option<String>,
- pub line: Option<usize>,
- pub column: Option<usize>,
- pub variables_reference: Option<usize>,
- pub source: Option<Source>,
- pub data: Option<Value>,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct Breakpoint {
- pub reason: String,
- pub breakpoint: super::Breakpoint,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct Module {
- pub reason: String,
- pub module: super::Module,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct LoadedSource {
- pub reason: String,
- pub source: super::Source,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct Process {
- pub name: String,
- pub system_process_id: Option<usize>,
- pub is_local_process: Option<bool>,
- pub start_method: String, // TODO: use enum
- pub pointer_size: Option<usize>,
- }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct Capabilities {
- pub module: super::DebuggerCapabilities,
- }
-
- // #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- // #[serde(rename_all = "camelCase")]
- // pub struct Invalidated {
- // pub areas: Vec<InvalidatedArea>,
- // pub thread_id: Option<usize>,
- // pub stack_frame_id: Option<usize>,
- // }
-
- #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
- #[serde(rename_all = "camelCase")]
- pub struct Memory {
- pub memory_reference: String,
- pub offset: usize,
- pub count: usize,
- }
-}
+use serde::{Deserialize, Serialize};
+use serde_json::Value;
+use std::path::PathBuf;
+
+pub trait Request {
+ type Arguments: serde::de::DeserializeOwned + serde::Serialize;
+ type Result: serde::de::DeserializeOwned + serde::Serialize;
+ const COMMAND: &'static str;
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct ColumnDescriptor {
+ pub attribute_name: String,
+ pub label: String,
+ pub format: Option<String>,
+ #[serde(rename = "type")]
+ pub col_type: Option<String>,
+ pub width: Option<usize>,
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct ExceptionBreakpointsFilter {
+ pub filter: String,
+ pub label: String,
+ pub description: Option<String>,
+ pub default: Option<bool>,
+ pub supports_condition: Option<bool>,
+ pub condition_description: Option<String>,
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct DebuggerCapabilities {
+ pub supports_configuration_done_request: Option<bool>,
+ pub supports_function_breakpoints: Option<bool>,
+ pub supports_conditional_breakpoints: Option<bool>,
+ pub supports_hit_conditional_breakpoints: Option<bool>,
+ pub supports_evaluate_for_hovers: Option<bool>,
+ pub supports_step_back: Option<bool>,
+ pub supports_set_variable: Option<bool>,
+ pub supports_restart_frame: Option<bool>,
+ pub supports_goto_targets_request: Option<bool>,
+ pub supports_step_in_targets_request: Option<bool>,
+ pub supports_completions_request: Option<bool>,
+ pub supports_modules_request: Option<bool>,
+ pub supports_restart_request: Option<bool>,
+ pub supports_exception_options: Option<bool>,
+ pub supports_value_formatting_options: Option<bool>,
+ pub supports_exception_info_request: Option<bool>,
+ pub support_terminate_debuggee: Option<bool>,
+ pub support_suspend_debuggee: Option<bool>,
+ pub supports_delayed_stack_trace_loading: Option<bool>,
+ pub supports_loaded_sources_request: Option<bool>,
+ pub supports_log_points: Option<bool>,
+ pub supports_terminate_threads_request: Option<bool>,
+ pub supports_set_expression: Option<bool>,
+ pub supports_terminate_request: Option<bool>,
+ pub supports_data_breakpoints: Option<bool>,
+ pub supports_read_memory_request: Option<bool>,
+ pub supports_write_memory_request: Option<bool>,
+ pub supports_disassemble_request: Option<bool>,
+ pub supports_cancel_request: Option<bool>,
+ pub supports_breakpoint_locations_request: Option<bool>,
+ pub supports_clipboard_context: Option<bool>,
+ pub supports_stepping_granularity: Option<bool>,
+ pub supports_instruction_breakpoints: Option<bool>,
+ pub supports_exception_filter_options: Option<bool>,
+ pub exception_breakpoint_filters: Option<Vec<ExceptionBreakpointsFilter>>,
+ pub completion_trigger_characters: Option<Vec<String>>,
+ pub additional_module_columns: Option<Vec<ColumnDescriptor>>,
+ pub supported_checksum_algorithms: Option<Vec<String>>,
+}
+
+impl std::ops::Deref for DebuggerCapabilities {
+ type Target = Option<bool>;
+
+ fn deref(&self) -> &Self::Target {
+ &self.supports_exception_options
+ }
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Checksum {
+ pub algorithm: String,
+ pub checksum: String,
+}
+
+#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Source {
+ pub name: Option<String>,
+ pub path: Option<PathBuf>,
+ pub source_reference: Option<usize>,
+ pub presentation_hint: Option<String>,
+ pub origin: Option<String>,
+ pub sources: Option<Vec<Source>>,
+ pub adapter_data: Option<Value>,
+ pub checksums: Option<Vec<Checksum>>,
+}
+
+#[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct SourceBreakpoint {
+ pub line: usize,
+ pub column: Option<usize>,
+ pub condition: Option<String>,
+ pub hit_condition: Option<String>,
+ pub log_message: Option<String>,
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Breakpoint {
+ pub id: Option<usize>,
+ pub verified: bool,
+ pub message: Option<String>,
+ pub source: Option<Source>,
+ pub line: Option<usize>,
+ pub column: Option<usize>,
+ pub end_line: Option<usize>,
+ pub end_column: Option<usize>,
+ pub instruction_reference: Option<String>,
+ pub offset: Option<usize>,
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct StackFrameFormat {
+ pub parameters: Option<bool>,
+ pub parameter_types: Option<bool>,
+ pub parameter_names: Option<bool>,
+ pub parameter_values: Option<bool>,
+ pub line: Option<bool>,
+ pub module: Option<bool>,
+ pub include_all: Option<bool>,
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct StackFrame {
+ pub id: usize,
+ pub name: String,
+ pub source: Option<Source>,
+ pub line: usize,
+ pub column: usize,
+ pub end_line: Option<usize>,
+ pub end_column: Option<usize>,
+ pub can_restart: Option<bool>,
+ pub instruction_pointer_reference: Option<String>,
+ pub module_id: Option<Value>,
+ pub presentation_hint: Option<String>,
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Thread {
+ pub id: usize,
+ pub name: String,
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Scope {
+ pub name: String,
+ pub presentation_hint: Option<String>,
+ pub variables_reference: usize,
+ pub named_variables: Option<usize>,
+ pub indexed_variables: Option<usize>,
+ pub expensive: bool,
+ pub source: Option<Source>,
+ pub line: Option<usize>,
+ pub column: Option<usize>,
+ pub end_line: Option<usize>,
+ pub end_column: Option<usize>,
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct ValueFormat {
+ pub hex: Option<bool>,
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct VariablePresentationHint {
+ pub kind: Option<String>,
+ pub attributes: Option<Vec<String>>,
+ pub visibility: Option<String>,
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Variable {
+ pub name: String,
+ pub value: String,
+ #[serde(rename = "type")]
+ pub data_type: Option<String>,
+ pub presentation_hint: Option<VariablePresentationHint>,
+ pub evaluate_name: Option<String>,
+ pub variables_reference: usize,
+ pub named_variables: Option<usize>,
+ pub indexed_variables: Option<usize>,
+ pub memory_reference: Option<String>,
+}
+
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct Module {
+ pub id: String, // TODO: || number
+ pub name: String,
+ pub path: Option<PathBuf>,
+ pub is_optimized: Option<bool>,
+ pub is_user_code: Option<bool>,
+ pub version: Option<String>,
+ pub symbol_status: Option<String>,
+ pub symbol_file_path: Option<String>,
+ pub date_time_stamp: Option<String>,
+ pub address_range: Option<String>,
+}
+
+pub mod requests {
+ use super::*;
+ #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct InitializeArguments {
+ #[serde(rename = "clientID")]
+ pub client_id: Option<String>,
+ pub client_name: Option<String>,
+ #[serde(rename = "adapterID")]
+ pub adapter_id: String,
+ pub locale: Option<String>,
+ #[serde(rename = "linesStartAt1")]
+ pub lines_start_at_one: Option<bool>,
+ #[serde(rename = "columnsStartAt1")]
+ pub columns_start_at_one: Option<bool>,
+ pub path_format: Option<String>,
+ pub supports_variable_type: Option<bool>,
+ pub supports_variable_paging: Option<bool>,
+ pub supports_run_in_terminal_request: Option<bool>,
+ pub supports_memory_references: Option<bool>,
+ pub supports_progress_reporting: Option<bool>,
+ pub supports_invalidated_event: Option<bool>,
+ }
+
+ #[derive(Debug)]
+ pub enum Initialize {}
+
+ impl Request for Initialize {
+ type Arguments = InitializeArguments;
+ type Result = DebuggerCapabilities;
+ const COMMAND: &'static str = "initialize";
+ }
+
+ #[derive(Debug)]
+ pub enum Launch {}
+
+ impl Request for Launch {
+ type Arguments = Value;
+ type Result = Value;
+ const COMMAND: &'static str = "launch";
+ }
+
+ #[derive(Debug)]
+ pub enum Attach {}
+
+ impl Request for Attach {
+ type Arguments = Value;
+ type Result = Value;
+ const COMMAND: &'static str = "attach";
+ }
+
+ #[derive(Debug)]
+ pub enum Disconnect {}
+
+ impl Request for Disconnect {
+ type Arguments = ();
+ type Result = ();
+ const COMMAND: &'static str = "disconnect";
+ }
+
+ #[derive(Debug)]
+ pub enum ConfigurationDone {}
+
+ impl Request for ConfigurationDone {
+ type Arguments = ();
+ type Result = ();
+ const COMMAND: &'static str = "configurationDone";
+ }
+
+ #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct SetBreakpointsArguments {
+ pub source: Source,
+ pub breakpoints: Option<Vec<SourceBreakpoint>>,
+ // lines is deprecated
+ pub source_modified: Option<bool>,
+ }
+
+ #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct SetBreakpointsResponse {
+ pub breakpoints: Option<Vec<Breakpoint>>,
+ }
+
+ #[derive(Debug)]
+ pub enum SetBreakpoints {}
+
+ impl Request for SetBreakpoints {
+ type Arguments = SetBreakpointsArguments;
+ type Result = SetBreakpointsResponse;
+ const COMMAND: &'static str = "setBreakpoints";
+ }
+
+ #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct ContinueArguments {
+ pub thread_id: usize,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct ContinueResponse {
+ pub all_threads_continued: Option<bool>,
+ }
+
+ #[derive(Debug)]
+ pub enum Continue {}
+
+ impl Request for Continue {
+ type Arguments = ContinueArguments;
+ type Result = ContinueResponse;
+ const COMMAND: &'static str = "continue";
+ }
+
+ #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct StackTraceArguments {
+ pub thread_id: usize,
+ pub start_frame: Option<usize>,
+ pub levels: Option<usize>,
+ pub format: Option<StackFrameFormat>,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct StackTraceResponse {
+ pub total_frames: Option<usize>,
+ pub stack_frames: Vec<StackFrame>,
+ }
+
+ #[derive(Debug)]
+ pub enum StackTrace {}
+
+ impl Request for StackTrace {
+ type Arguments = StackTraceArguments;
+ type Result = StackTraceResponse;
+ const COMMAND: &'static str = "stackTrace";
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct ThreadsResponse {
+ pub threads: Vec<Thread>,
+ }
+
+ #[derive(Debug)]
+ pub enum Threads {}
+
+ impl Request for Threads {
+ type Arguments = ();
+ type Result = ThreadsResponse;
+ const COMMAND: &'static str = "threads";
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct ScopesArguments {
+ pub frame_id: usize,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct ScopesResponse {
+ pub scopes: Vec<Scope>,
+ }
+
+ #[derive(Debug)]
+ pub enum Scopes {}
+
+ impl Request for Scopes {
+ type Arguments = ScopesArguments;
+ type Result = ScopesResponse;
+ const COMMAND: &'static str = "scopes";
+ }
+
+ #[derive(Debug, Default, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct VariablesArguments {
+ pub variables_reference: usize,
+ pub filter: Option<String>,
+ pub start: Option<usize>,
+ pub count: Option<usize>,
+ pub format: Option<ValueFormat>,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct VariablesResponse {
+ pub variables: Vec<Variable>,
+ }
+
+ #[derive(Debug)]
+ pub enum Variables {}
+
+ impl Request for Variables {
+ type Arguments = VariablesArguments;
+ type Result = VariablesResponse;
+ const COMMAND: &'static str = "variables";
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct StepInArguments {
+ pub thread_id: usize,
+ pub target_id: Option<usize>,
+ pub granularity: Option<String>,
+ }
+
+ #[derive(Debug)]
+ pub enum StepIn {}
+
+ impl Request for StepIn {
+ type Arguments = StepInArguments;
+ type Result = ();
+ const COMMAND: &'static str = "stepIn";
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct StepOutArguments {
+ pub thread_id: usize,
+ pub granularity: Option<String>,
+ }
+
+ #[derive(Debug)]
+ pub enum StepOut {}
+
+ impl Request for StepOut {
+ type Arguments = StepOutArguments;
+ type Result = ();
+ const COMMAND: &'static str = "stepOut";
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct NextArguments {
+ pub thread_id: usize,
+ pub granularity: Option<String>,
+ }
+
+ #[derive(Debug)]
+ pub enum Next {}
+
+ impl Request for Next {
+ type Arguments = NextArguments;
+ type Result = ();
+ const COMMAND: &'static str = "next";
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct PauseArguments {
+ pub thread_id: usize,
+ }
+
+ #[derive(Debug)]
+ pub enum Pause {}
+
+ impl Request for Pause {
+ type Arguments = PauseArguments;
+ type Result = ();
+ const COMMAND: &'static str = "pause";
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct EvaluateArguments {
+ pub expression: String,
+ pub frame_id: Option<usize>,
+ pub context: Option<String>,
+ pub format: Option<ValueFormat>,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct EvaluateResponse {
+ pub result: String,
+ #[serde(rename = "type")]
+ pub data_type: Option<String>,
+ pub presentation_hint: Option<VariablePresentationHint>,
+ pub variables_reference: usize,
+ pub named_variables: Option<usize>,
+ pub indexed_variables: Option<usize>,
+ pub memory_reference: Option<String>,
+ }
+
+ #[derive(Debug)]
+ pub enum Evaluate {}
+
+ impl Request for Evaluate {
+ type Arguments = EvaluateArguments;
+ type Result = EvaluateResponse;
+ const COMMAND: &'static str = "evaluate";
+ }
+}
+
+// Events
+
+pub mod events {
+ use super::*;
+
+ #[derive(Debug, Clone, Serialize, Deserialize)]
+ #[serde(rename_all = "camelCase")]
+ #[serde(tag = "event", content = "body")]
+ // seq is omitted as unused and is not sent by some implementations
+ pub enum Event {
+ Initialized,
+ Stopped(Stopped),
+ Continued(Continued),
+ Exited(Exited),
+ Terminated(Terminated),
+ Thread(Thread),
+ Output(Output),
+ Breakpoint(Breakpoint),
+ Module(Module),
+ LoadedSource(LoadedSource),
+ Process(Process),
+ Capabilities(Capabilities),
+ // ProgressStart(),
+ // ProgressUpdate(),
+ // ProgressEnd(),
+ // Invalidated(),
+ Memory(Memory),
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct Stopped {
+ pub reason: String,
+ pub description: Option<String>,
+ pub thread_id: Option<usize>,
+ pub preserve_focus_hint: Option<bool>,
+ pub text: Option<String>,
+ pub all_threads_stopped: Option<bool>,
+ pub hit_breakpoint_ids: Option<Vec<usize>>,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct Continued {
+ pub thread_id: usize,
+ pub all_threads_continued: Option<bool>,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct Exited {
+ pub exit_code: usize,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct Terminated {
+ pub restart: Option<Value>,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct Thread {
+ pub reason: String,
+ pub thread_id: usize,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct Output {
+ pub output: String,
+ pub category: Option<String>,
+ pub group: Option<String>,
+ pub line: Option<usize>,
+ pub column: Option<usize>,
+ pub variables_reference: Option<usize>,
+ pub source: Option<Source>,
+ pub data: Option<Value>,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct Breakpoint {
+ pub reason: String,
+ pub breakpoint: super::Breakpoint,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct Module {
+ pub reason: String,
+ pub module: super::Module,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct LoadedSource {
+ pub reason: String,
+ pub source: super::Source,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct Process {
+ pub name: String,
+ pub system_process_id: Option<usize>,
+ pub is_local_process: Option<bool>,
+ pub start_method: String, // TODO: use enum
+ pub pointer_size: Option<usize>,
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct Capabilities {
+ pub module: super::DebuggerCapabilities,
+ }
+
+ // #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ // #[serde(rename_all = "camelCase")]
+ // pub struct Invalidated {
+ // pub areas: Vec<InvalidatedArea>,
+ // pub thread_id: Option<usize>,
+ // pub stack_frame_id: Option<usize>,
+ // }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct Memory {
+ pub memory_reference: String,
+ pub offset: usize,
+ pub count: usize,
+ }
+}