debugger beta: Fix panic that could occur when parsing an invalid dap schema (#31175)
Release Notes: - N/A
This commit is contained in:
parent
06f725d51b
commit
80a00cd241
4 changed files with 21 additions and 6 deletions
|
@ -375,9 +375,10 @@ pub trait DebugAdapter: 'static + Send + Sync {
|
||||||
) -> Result<StartDebuggingRequestArgumentsRequest> {
|
) -> Result<StartDebuggingRequestArgumentsRequest> {
|
||||||
let map = config.as_object().context("Config isn't an object")?;
|
let map = config.as_object().context("Config isn't an object")?;
|
||||||
|
|
||||||
let request_variant = map["request"]
|
let request_variant = map
|
||||||
.as_str()
|
.get("request")
|
||||||
.ok_or_else(|| anyhow!("request is not valid"))?;
|
.and_then(|val| val.as_str())
|
||||||
|
.context("request argument is not found or invalid")?;
|
||||||
|
|
||||||
match request_variant {
|
match request_variant {
|
||||||
"launch" => Ok(StartDebuggingRequestArgumentsRequest::Launch),
|
"launch" => Ok(StartDebuggingRequestArgumentsRequest::Launch),
|
||||||
|
|
|
@ -289,7 +289,10 @@ impl DebugAdapter for GoDebugAdapter {
|
||||||
) -> Result<StartDebuggingRequestArgumentsRequest> {
|
) -> Result<StartDebuggingRequestArgumentsRequest> {
|
||||||
let map = config.as_object().context("Config isn't an object")?;
|
let map = config.as_object().context("Config isn't an object")?;
|
||||||
|
|
||||||
let request_variant = map["request"].as_str().context("request is not valid")?;
|
let request_variant = map
|
||||||
|
.get("request")
|
||||||
|
.and_then(|val| val.as_str())
|
||||||
|
.context("request argument is not found or invalid")?;
|
||||||
|
|
||||||
match request_variant {
|
match request_variant {
|
||||||
"launch" => Ok(StartDebuggingRequestArgumentsRequest::Launch),
|
"launch" => Ok(StartDebuggingRequestArgumentsRequest::Launch),
|
||||||
|
|
|
@ -2,6 +2,7 @@ use adapters::latest_github_release;
|
||||||
use anyhow::Context as _;
|
use anyhow::Context as _;
|
||||||
use anyhow::bail;
|
use anyhow::bail;
|
||||||
use dap::StartDebuggingRequestArguments;
|
use dap::StartDebuggingRequestArguments;
|
||||||
|
use dap::StartDebuggingRequestArgumentsRequest;
|
||||||
use dap::adapters::{DebugTaskDefinition, TcpArguments};
|
use dap::adapters::{DebugTaskDefinition, TcpArguments};
|
||||||
use gpui::{AsyncApp, SharedString};
|
use gpui::{AsyncApp, SharedString};
|
||||||
use language::LanguageName;
|
use language::LanguageName;
|
||||||
|
@ -46,6 +47,13 @@ impl PhpDebugAdapter {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn validate_config(
|
||||||
|
&self,
|
||||||
|
_: &serde_json::Value,
|
||||||
|
) -> Result<StartDebuggingRequestArgumentsRequest> {
|
||||||
|
Ok(StartDebuggingRequestArgumentsRequest::Launch)
|
||||||
|
}
|
||||||
|
|
||||||
async fn get_installed_binary(
|
async fn get_installed_binary(
|
||||||
&self,
|
&self,
|
||||||
delegate: &Arc<dyn DapDelegate>,
|
delegate: &Arc<dyn DapDelegate>,
|
||||||
|
@ -93,7 +101,7 @@ impl PhpDebugAdapter {
|
||||||
envs: HashMap::default(),
|
envs: HashMap::default(),
|
||||||
request_args: StartDebuggingRequestArguments {
|
request_args: StartDebuggingRequestArguments {
|
||||||
configuration: task_definition.config.clone(),
|
configuration: task_definition.config.clone(),
|
||||||
request: dap::StartDebuggingRequestArgumentsRequest::Launch,
|
request: self.validate_config(&task_definition.config)?,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -201,7 +201,10 @@ impl DebugAdapter for PythonDebugAdapter {
|
||||||
) -> Result<StartDebuggingRequestArgumentsRequest> {
|
) -> Result<StartDebuggingRequestArgumentsRequest> {
|
||||||
let map = config.as_object().context("Config isn't an object")?;
|
let map = config.as_object().context("Config isn't an object")?;
|
||||||
|
|
||||||
let request_variant = map["request"].as_str().context("request is not valid")?;
|
let request_variant = map
|
||||||
|
.get("request")
|
||||||
|
.and_then(|val| val.as_str())
|
||||||
|
.context("request is not valid")?;
|
||||||
|
|
||||||
match request_variant {
|
match request_variant {
|
||||||
"launch" => Ok(StartDebuggingRequestArgumentsRequest::Launch),
|
"launch" => Ok(StartDebuggingRequestArgumentsRequest::Launch),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue