Use anyhow
more idiomatically (#31052)
https://github.com/zed-industries/zed/issues/30972 brought up another case where our context is not enough to track the actual source of the issue: we get a general top-level error without inner error. The reason for this was `.ok_or_else(|| anyhow!("failed to read HEAD SHA"))?; ` on the top level. The PR finally reworks the way we use anyhow to reduce such issues (or at least make it simpler to bubble them up later in a fix). On top of that, uses a few more anyhow methods for better readability. * `.ok_or_else(|| anyhow!("..."))`, `map_err` and other similar error conversion/option reporting cases are replaced with `context` and `with_context` calls * in addition to that, various `anyhow!("failed to do ...")` are stripped with `.context("Doing ...")` messages instead to remove the parasitic `failed to` text * `anyhow::ensure!` is used instead of `if ... { return Err(...); }` calls * `anyhow::bail!` is used instead of `return Err(anyhow!(...));` Release Notes: - N/A
This commit is contained in:
parent
1e51a7ac44
commit
16366cf9f2
294 changed files with 2037 additions and 2610 deletions
|
@ -8,7 +8,7 @@ use std::{
|
|||
sync::Arc,
|
||||
};
|
||||
|
||||
use anyhow::{Context, Result, anyhow, bail};
|
||||
use anyhow::{Context as _, Result, bail};
|
||||
use client::DevServerProjectId;
|
||||
use db::{define_connection, query, sqlez::connection::Connection, sqlez_macros::sql};
|
||||
use gpui::{Axis, Bounds, Task, WindowBounds, WindowId, point, size};
|
||||
|
@ -181,7 +181,7 @@ impl Column for BreakpointStateWrapper<'_> {
|
|||
match state {
|
||||
0 => Ok((BreakpointState::Enabled.into(), start_index + 1)),
|
||||
1 => Ok((BreakpointState::Disabled.into(), start_index + 1)),
|
||||
_ => Err(anyhow::anyhow!("Invalid BreakpointState discriminant")),
|
||||
_ => anyhow::bail!("Invalid BreakpointState discriminant {state}"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -914,7 +914,7 @@ impl WorkspaceDb {
|
|||
log::debug!("Inserting SSH project at host {host}");
|
||||
self.insert_ssh_project(host, port, paths, user)
|
||||
.await?
|
||||
.ok_or_else(|| anyhow!("failed to insert ssh project"))
|
||||
.context("failed to insert ssh project")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1244,7 +1244,7 @@ impl WorkspaceDb {
|
|||
*axis,
|
||||
flex_string,
|
||||
))?
|
||||
.ok_or_else(|| anyhow!("Couldn't retrieve group_id from inserted pane_group"))?;
|
||||
.context("Couldn't retrieve group_id from inserted pane_group")?;
|
||||
|
||||
for (position, group) in children.iter().enumerate() {
|
||||
Self::save_pane_group(conn, workspace_id, group, Some((group_id, position)))?
|
||||
|
@ -1270,7 +1270,7 @@ impl WorkspaceDb {
|
|||
VALUES (?, ?, ?)
|
||||
RETURNING pane_id
|
||||
))?((workspace_id, pane.active, pane.pinned_count))?
|
||||
.ok_or_else(|| anyhow!("Could not retrieve inserted pane_id"))?;
|
||||
.context("Could not retrieve inserted pane_id")?;
|
||||
|
||||
let (parent_id, order) = parent.unzip();
|
||||
conn.exec_bound(sql!(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue