1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-21 23:04:45 -05:00

fix(#10603): revert minimal changes to resolve deadlock bug (#10605)

This commit is contained in:
Kitson Kelly 2021-05-12 13:10:06 +10:00 committed by GitHub
parent 57927781ed
commit 0e17f086ce
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 35 deletions

View file

@ -184,6 +184,7 @@ impl LspClient {
}
}
#[allow(unused)]
fn read_request<R>(&mut self) -> Result<(u64, String, Option<R>), AnyError>
where
R: de::DeserializeOwned,
@ -238,6 +239,7 @@ impl LspClient {
}
}
#[allow(unused)]
fn write_response<V>(&mut self, id: u64, result: V) -> Result<(), AnyError>
where
V: Serialize,
@ -294,15 +296,16 @@ fn bench_big_file_edits(deno_exe: &Path) -> Result<Duration, AnyError> {
}),
)?;
let (id, method, _): (u64, String, Option<Value>) = client.read_request()?;
assert_eq!(method, "workspace/configuration");
// TODO(@kitsonk) work around https://github.com/denoland/deno/issues/10603
// let (id, method, _): (u64, String, Option<Value>) = client.read_request()?;
// assert_eq!(method, "workspace/configuration");
client.write_response(
id,
json!({
"enable": true
}),
)?;
// client.write_response(
// id,
// json!({
// "enable": true
// }),
// )?;
let (method, _): (String, Option<Value>) = client.read_notification()?;
assert_eq!(method, "textDocument/publishDiagnostics");
@ -366,15 +369,16 @@ fn bench_startup_shutdown(deno_exe: &Path) -> Result<Duration, AnyError> {
}),
)?;
let (id, method, _): (u64, String, Option<Value>) = client.read_request()?;
assert_eq!(method, "workspace/configuration");
// TODO(@kitsonk) work around https://github.com/denoland/deno/issues/10603
// let (id, method, _): (u64, String, Option<Value>) = client.read_request()?;
// assert_eq!(method, "workspace/configuration");
client.write_response(
id,
json!({
"enable": true
}),
)?;
// client.write_response(
// id,
// json!({
// "enable": true
// }),
// )?;
let (method, _): (String, Option<Value>) = client.read_notification()?;
assert_eq!(method, "textDocument/publishDiagnostics");

View file

@ -148,6 +148,7 @@ pub struct Config {
}
impl Config {
#[allow(unused)]
pub fn contains(&self, specifier: &ModuleSpecifier) -> bool {
self.specifier_settings.contains_key(specifier)
}

View file

@ -594,25 +594,26 @@ impl Inner {
let specifier = self.url_map.normalize_url(&params.text_document.uri);
// we only query the individual resource file if the client supports it
if self.config.client_capabilities.workspace_configuration
&& !self.config.contains(&specifier)
{
if let Ok(value) = self
.client
.configuration(vec![ConfigurationItem {
scope_uri: Some(params.text_document.uri.clone()),
section: Some(SETTINGS_SECTION.to_string()),
}])
.await
{
if let Err(err) = self
.config
.update_specifier(specifier.clone(), value[0].clone())
{
warn!("Error updating specifier configuration: {}", err);
}
}
}
// TODO(@kitsonk) workaround https://github.com/denoland/deno/issues/10603
// if self.config.client_capabilities.workspace_configuration
// && !self.config.contains(&specifier)
// {
// if let Ok(value) = self
// .client
// .configuration(vec![ConfigurationItem {
// scope_uri: Some(params.text_document.uri.clone()),
// section: Some(SETTINGS_SECTION.to_string()),
// }])
// .await
// {
// if let Err(err) = self
// .config
// .update_specifier(specifier.clone(), value[0].clone())
// {
// warn!("Error updating specifier configuration: {}", err);
// }
// }
// }
if params.text_document.uri.scheme() == "deno" {
// we can ignore virtual text documents opening, as they don't need to