]> git.proxmox.com Git - rustc.git/blame - vendor/lsp-types/src/trace.rs
New upstream version 1.69.0+dfsg1
[rustc.git] / vendor / lsp-types / src / trace.rs
CommitLineData
9ffffee4
FG
1use serde::{Deserialize, Serialize};\r
2\r
3#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]\r
4pub struct SetTraceParams {\r
5 /// The new value that should be assigned to the trace setting.\r
6 pub value: TraceValue,\r
7}\r
8\r
9/// A TraceValue represents the level of verbosity with which the server systematically\r
10/// reports its execution trace using `LogTrace` notifications.\r
11///\r
12/// The initial trace value is set by the client at initialization and can be modified\r
13/// later using the `SetTrace` notification.\r
14#[derive(Debug, Eq, PartialEq, Clone, Copy, Deserialize, Serialize)]\r
15#[serde(rename_all = "camelCase")]\r
16pub enum TraceValue {\r
17 /// The server should not send any `$/logTrace` notification\r
18 Off,\r
19 /// The server should not add the 'verbose' field in the `LogTraceParams`\r
20 Messages,\r
21 Verbose,\r
22}\r
23\r
24impl Default for TraceValue {\r
25 fn default() -> TraceValue {\r
26 TraceValue::Off\r
27 }\r
28}\r
29\r
30#[derive(Debug, Eq, PartialEq, Clone, Deserialize, Serialize)]\r
31#[serde(rename_all = "camelCase")]\r
32pub struct LogTraceParams {\r
33 /// The message to be logged.\r
34 pub message: String,\r
35 /// Additional information that can be computed if the `trace` configuration\r
36 /// is set to `'verbose'`\r
37 #[serde(skip_serializing_if = "Option::is_none")]\r
38 pub verbose: Option<String>,\r
39}\r
40\r
41#[cfg(test)]\r
42mod tests {\r
43 use super::*;\r
44 use crate::tests::test_serialization;\r
45\r
46 #[test]\r
47 fn test_set_trace_params() {\r
48 test_serialization(\r
49 &SetTraceParams {\r
50 value: TraceValue::Off,\r
51 },\r
52 r#"{"value":"off"}"#,\r
53 );\r
54 }\r
55\r
56 #[test]\r
57 fn test_log_trace_params() {\r
58 test_serialization(\r
59 &LogTraceParams {\r
60 message: "message".into(),\r
61 verbose: None,\r
62 },\r
63 r#"{"message":"message"}"#,\r
64 );\r
65\r
66 test_serialization(\r
67 &LogTraceParams {\r
68 message: "message".into(),\r
69 verbose: Some("verbose".into()),\r
70 },\r
71 r#"{"message":"message","verbose":"verbose"}"#,\r
72 );\r
73 }\r
74\r
75 #[test]\r
76 fn test_trace_value() {\r
77 test_serialization(\r
78 &vec![TraceValue::Off, TraceValue::Messages, TraceValue::Verbose],\r
79 r#"["off","messages","verbose"]"#,\r
80 );\r
81 }\r
82}\r