@@ -15,12 +15,13 @@ use tokio::{
15#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
15#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
16#[serde(rename_all = "camelCase")]
16#[serde(rename_all = "camelCase")]
17pub struct DebuggerCapabilities {
17pub struct DebuggerCapabilities {
18− supports_configuration_done_request: bool,
18+ pub supports_configuration_done_request: Option<bool>,
19− supports_function_breakpoints: bool,
19+ pub supports_function_breakpoints: Option<bool>,
20− supports_conditional_breakpoints: bool,
20+ pub supports_conditional_breakpoints: Option<bool>,
21− supports_exception_info_request: bool,
21+ pub supports_exception_info_request: Option<bool>,
22− support_terminate_debuggee: bool,
22+ pub support_terminate_debuggee: Option<bool>,
23− supports_delayed_stack_trace_loading: bool,
23+ pub supports_delayed_stack_trace_loading: Option<bool>,
24+ // TODO: complete this
26#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
27#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
@@ -43,7 +44,7 @@ struct InitializeArguments {
43 supports_invalidated_event: bool,
44 supports_invalidated_event: bool,
46−// TODO: split out
47+// TODO: split out, as it's a debugger-specific payload not covered by standard
47#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
48#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
48#[serde(rename_all = "camelCase")]
49#[serde(rename_all = "camelCase")]
49struct LaunchArguments {
50struct LaunchArguments {
@@ -51,10 +52,24 @@ struct LaunchArguments {
51 program: String,
52 program: String,
55+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
56+#[serde(rename_all = "camelCase")]
58+ pub algorithm: String,
59+ pub checksum: String,
54#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
62#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
55#[serde(rename_all = "camelCase")]
63#[serde(rename_all = "camelCase")]
56pub struct Source {
64pub struct Source {
65+ pub name: Option<String>,
57− path: Option<String>,
66+ pub path: Option<String>,
67+ pub source_reference: Option<usize>,
68+ pub presentation_hint: Option<String>,
69+ pub origin: Option<String>,
70+ pub sources: Option<Vec<Source>>,
71+ pub adapter_data: Option<Value>,
72+ pub checksums: Option<Vec<Checksum>>,
60#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
75#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
@@ -62,6 +77,9 @@ pub struct Source {
62pub struct SourceBreakpoint {
77pub struct SourceBreakpoint {
63 pub line: usize,
78 pub line: usize,
64 pub column: Option<usize>,
79 pub column: Option<usize>,
80+ pub condition: Option<String>,
81+ pub hit_condition: Option<String>,
82+ pub log_message: Option<String>,
67#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
85#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
@@ -69,6 +87,8 @@ pub struct SourceBreakpoint {
69struct SetBreakpointsArguments {
87struct SetBreakpointsArguments {
70 source: Source,
88 source: Source,
71 breakpoints: Option<Vec<SourceBreakpoint>>,
89 breakpoints: Option<Vec<SourceBreakpoint>>,
90+ // lines is deprecated
91+ source_modified: Option<bool>,
74#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
94#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
@@ -137,7 +157,7 @@ pub struct StackFrame {
137 pub end_column: Option<usize>,
157 pub end_column: Option<usize>,
138 pub can_restart: Option<bool>,
158 pub can_restart: Option<bool>,
139 pub instruction_pointer_reference: Option<String>,
159 pub instruction_pointer_reference: Option<String>,
140− // module_id
160+ pub module_id: Option<Value>,
141 pub presentation_hint: Option<String>,
161 pub presentation_hint: Option<String>,
@@ -271,9 +291,6 @@ impl Client {
271 capabilities: None,
291 capabilities: None,
274− // TODO: async client.initialize()
275− // maybe use an arc<atomic> flag
277 Ok(client)
294 Ok(client)
@@ -374,8 +391,18 @@ impl Client {
374 breakpoints: Vec<SourceBreakpoint>,
391 breakpoints: Vec<SourceBreakpoint>,
375 ) -> Result<Option<Vec<Breakpoint>>> {
392 ) -> Result<Option<Vec<Breakpoint>>> {
376 let args = SetBreakpointsArguments {
393 let args = SetBreakpointsArguments {
377− source: Source { path: Some(file) },
394+ source: Source {
397+ source_reference: None,
398+ presentation_hint: None,
378 breakpoints: Some(breakpoints),
404 breakpoints: Some(breakpoints),
405+ source_modified: Some(false),
381 let response = self
408 let response = self