From 7070b8ed50f13d95d926b19ed7d7ce9fc0d6d4f3 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Wed, 15 Mar 2023 10:34:23 -0400 Subject: fix(lsp): avoid calling client while holding lock (#18197) --- test_util/src/lsp.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'test_util/src') diff --git a/test_util/src/lsp.rs b/test_util/src/lsp.rs index 7578aedf3..786a2dee5 100644 --- a/test_util/src/lsp.rs +++ b/test_util/src/lsp.rs @@ -148,6 +148,11 @@ impl LspStdoutReader { self.pending_messages.0.lock().len() } + pub fn output_pending_messages(&self) { + let messages = self.pending_messages.0.lock(); + eprintln!("{:?}", messages); + } + pub fn had_message(&self, is_match: impl Fn(&LspMessage) -> bool) -> bool { self.read_messages.iter().any(&is_match) || self.pending_messages.0.lock().iter().any(&is_match) @@ -453,6 +458,9 @@ impl LspClientBuilder { self } + // not deprecated, this is just here so you don't accidentally + // commit code with this enabled + #[deprecated] pub fn print_stderr(&mut self) -> &mut Self { self.print_stderr = true; self @@ -541,6 +549,7 @@ impl LspClient { } pub fn queue_len(&self) -> usize { + self.reader.output_pending_messages(); self.reader.pending_len() } @@ -551,12 +560,26 @@ impl LspClient { pub fn initialize( &mut self, do_build: impl Fn(&mut InitializeParamsBuilder), + ) { + self.initialize_with_config( + do_build, + json!([{ + "enable": true + }]), + ) + } + + pub fn initialize_with_config( + &mut self, + do_build: impl Fn(&mut InitializeParamsBuilder), + config: Value, ) { let mut builder = InitializeParamsBuilder::new(); builder.set_root_uri(self.context.deno_dir().uri()); do_build(&mut builder); self.write_request("initialize", builder.build()); self.write_notification("initialized", json!({})); + self.handle_configuration_request(config); } pub fn did_open(&mut self, params: Value) -> CollectedDiagnostics { -- cgit v1.2.3