Enable `clippy::await_holding_lock` (#9362)
Marshall Bowers
created 2 years ago
This PR enables the
[`clippy::await_holding_lock`](https://rust-lang.github.io/rust-clippy/master/index.html#/await_holding_lock)
rule and fixes the outstanding violations.
Release Notes:
- N/A
Change summary
Cargo.toml | 1
crates/project/src/project.rs | 40 +++++++++++++++++++++---------------
2 files changed, 23 insertions(+), 18 deletions(-)
Detailed changes
@@ -406,7 +406,6 @@ style = "allow"
# Individual rules that have violations in the codebase:
almost_complete_range = "allow"
arc_with_non_send_sync = "allow"
-await_holding_lock = "allow"
borrowed_box = "allow"
derive_ord_xor_partial_ord = "allow"
eq_op = "allow"
@@ -5235,16 +5235,19 @@ impl Project {
project_id.ok_or_else(|| anyhow!("Remote project without remote_id"))?;
for completion_index in completion_indices {
- let completions_guard = completions.read();
- let completion = &completions_guard[completion_index];
- if completion.documentation.is_some() {
- continue;
- }
+ let (server_id, completion) = {
+ let completions_guard = completions.read();
+ let completion = &completions_guard[completion_index];
+ if completion.documentation.is_some() {
+ continue;
+ }
- did_resolve = true;
- let server_id = completion.server_id;
- let completion = completion.lsp_completion.clone();
- drop(completions_guard);
+ did_resolve = true;
+ let server_id = completion.server_id;
+ let completion = completion.lsp_completion.clone();
+
+ (server_id, completion)
+ };
Self::resolve_completion_documentation_remote(
project_id,
@@ -5259,15 +5262,18 @@ impl Project {
}
} else {
for completion_index in completion_indices {
- let completions_guard = completions.read();
- let completion = &completions_guard[completion_index];
- if completion.documentation.is_some() {
- continue;
- }
+ let (server_id, completion) = {
+ let completions_guard = completions.read();
+ let completion = &completions_guard[completion_index];
+ if completion.documentation.is_some() {
+ continue;
+ }
+
+ let server_id = completion.server_id;
+ let completion = completion.lsp_completion.clone();
- let server_id = completion.server_id;
- let completion = completion.lsp_completion.clone();
- drop(completions_guard);
+ (server_id, completion)
+ };
let server = this
.read_with(&mut cx, |project, _| {