on master help sign in
Fix unwrap bug in DAP (#6786)
commit8839eb0af47b99511956d81a6dbb32e948d2076c authorA-Walrus <58790821+A-Walrus@users.noreply.github.com> dateMon 17 Apr 2023, 23:36 (4 years ago) parent1b016a8
3 files changed+33−24
helix-dap/src/client.rs+4−6 helix-dap/src/transport.rs+28−18 helix-view/src/handlers/dap.rs+1
helix-dap/src/client.rs+4−6
@@ -62,12 +62,10 @@ impl Client {
6262 if command.is_empty() {
6363 return Result::Err(Error::Other(anyhow!("Command not provided")));
6464 }
65− if transport == "tcp" && port_arg.is_some() {
66− Self::tcp_process(command, args, port_arg.unwrap(), id).await
67− } else if transport == "stdio" {
68− Self::stdio(command, args, id)
69− } else {
70− Result::Err(Error::Other(anyhow!("Incorrect transport {}", transport)))
65+ match (transport, port_arg) {
66+ ("tcp", Some(port_arg)) => Self::tcp_process(command, args, port_arg, id).await,
67+ ("stdio", _) => Self::stdio(command, args, id),
68+ _ => Result::Err(Error::Other(anyhow!("Incorrect transport {}", transport))),
7169 }
7270 }
7371
helix-dap/src/transport.rs+28−18
@@ -230,38 +230,48 @@ impl Transport {
230230 }
231231 }
232232
233− async fn recv(
233+ async fn recv_inner(
234234 transport: Arc<Self>,
235235 mut server_stdout: Box<dyn AsyncBufRead + Unpin + Send>,
236236 client_tx: UnboundedSender<Payload>,
237− ) {
237+ ) -> Result<()> {
238238 let mut recv_buffer = String::new();
239239 loop {
240− match Self::recv_server_message(&mut server_stdout, &mut recv_buffer).await {
241− Ok(msg) => {
242− transport
243− .process_server_message(&client_tx, msg)
244− .await
245− .unwrap();
246− }
247− Err(err) => {
248− error!("err: <- {:?}", err);
249− break;
250− }
251− }
240+ let msg = Self::recv_server_message(&mut server_stdout, &mut recv_buffer).await?;
241+ transport.process_server_message(&client_tx, msg).await?;
252242 }
253243 }
254244
255− async fn send(
245+ async fn recv(
246+ transport: Arc<Self>,
247+ server_stdout: Box<dyn AsyncBufRead + Unpin + Send>,
248+ client_tx: UnboundedSender<Payload>,
249+ ) {
250+ if let Err(err) = Self::recv_inner(transport, server_stdout, client_tx).await {
251+ error!("err: <- {:?}", err);
252+ }
253+ }
254+
255+ async fn send_inner(
256256 transport: Arc<Self>,
257257 mut server_stdin: Box<dyn AsyncWrite + Unpin + Send>,
258258 mut client_rx: UnboundedReceiver<Payload>,
259− ) {
259+ ) -> Result<()> {
260260 while let Some(payload) = client_rx.recv().await {
261261 transport
262262 .send_payload_to_server(&mut server_stdin, payload)
263− .await
264− .unwrap()
263+ .await?;
264+ }
265+ Ok(())
266+ }
267+
268+ async fn send(
269+ transport: Arc<Self>,
270+ server_stdin: Box<dyn AsyncWrite + Unpin + Send>,
271+ client_rx: UnboundedReceiver<Payload>,
272+ ) {
273+ if let Err(err) = Self::send_inner(transport, server_stdin, client_rx).await {
274+ error!("err: <- {:?}", err);
265275 }
266276 }
267277
helix-view/src/handlers/dap.rs+1
@@ -321,6 +321,7 @@ impl Editor {
321321 }
322322 }
323323 None => {
324+ self.debugger = None;
324325 self.set_status(
325326 "Terminated debugging session and disconnected debugger.",
326327 );