mirror of
https://github.com/zed-industries/zed.git
synced 2026-05-24 05:25:18 +00:00
## Context Previously the Run Debugger gutter arrow would fail silently when the Cargo.toml had garbage lines such as “asdfasdf”. This fix makes it so that the error is detected and bubbles up to the editor, which will notify the user with a toast diagnostic. Closes #46716 ## Fix https://github.com/user-attachments/assets/2e9ac7e9-1306-4607-a762-457131473572 ## How to Review Small PR - focused on four different files: In - `crates/languages/src/rust.rs`: - `target_info_from_abs_path()` - The function signature was changed from `Option<(Option<TargetInfo>, Arc<Path>)>` to `Result<Option<(Option<TargetInfo>, Arc<Path>)>>`. A condition was added to ensure that if the Cargo metadata command is unsuccessful, the function returns an error instead of causing an EOF error while deserializing the stdout of the command. - `build_context()` - Added a `?` in `target_info_from_abs_path(path, project_env.as_ref()).await` in order to return the error. In - `crates/project/src/task_store.rs`: - `local_task_context_for_location()` and `remote_task_context_for_location()` - The functions signatures were changed from `Task<Option<TaskContext>>` to `Task<anyhow::Result<Option<TaskContext>>>` for the purpose of propagating the error. In - `crates/editor/src/editor_tests.rs`: - `build_tasks_context()` - The function signature was changed from `Task<Option<TaskContext>>` to `Task<anyhow::Result<Option<TaskContext>>>` . - `toggle_code_actions()` - In case `build_tasks_context()` fails, the functions notifies the error to the user as a Toast notification. In - `crates/editor/src/runnables.rs`: - Since `build_tasks_context()` and `task_store.task_context_for_location()` now return a Result, the callers` spawn_nearest_task() `and `task_context()` were modified. The resulting Result types are transformed to match the expected return types of `TaskContext` and `Task<Option<TaskContext>>` Two new tests were added. The first, `target_info_from_abs_path_failed` in `crates/languages/src/rust.rs`, checks if the system properly catches the error. The second, `test_toggle_code_actions_build_tasks_context_error_notifies` in `crates/editor/src/editor_tests.rs`, confirms that the editor triggers the expected error notification. ## Self-Review Checklist - [X] I've reviewed my own diff for quality, security, and reliability - [ ] Unsafe blocks (if any) have justifying comments - [X] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [X] Tests cover the new/changed behavior - [X] Performance impact has been considered and is acceptable Release Notes: - Fixed the error: Run Debugger failing silently due to invalid Cargo.toml content --------- Co-authored-by: Lukas Wirth <lukas@zed.dev>
82 lines
2.1 KiB
TOML
82 lines
2.1 KiB
TOML
[package]
|
|
name = "languages"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
publish.workspace = true
|
|
license = "GPL-3.0-or-later"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[features]
|
|
test-support = [
|
|
"load-grammars"
|
|
]
|
|
load-grammars = [
|
|
"grammars/load-grammars",
|
|
"tree-sitter",
|
|
"tree-sitter-gitcommit",
|
|
]
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
async-compression.workspace = true
|
|
async-fs.workspace = true
|
|
async-tar.workspace = true
|
|
async-trait.workspace = true
|
|
chrono.workspace = true
|
|
collections.workspace = true
|
|
futures.workspace = true
|
|
globset.workspace = true
|
|
gpui.workspace = true
|
|
grammars.workspace = true
|
|
http_client.workspace = true
|
|
itertools.workspace = true
|
|
json_schema_store.workspace = true
|
|
language.workspace = true
|
|
log.workspace = true
|
|
lsp.workspace = true
|
|
node_runtime.workspace = true
|
|
parking_lot.workspace = true
|
|
pet-conda.workspace = true
|
|
pet-core.workspace = true
|
|
pet-fs.workspace = true
|
|
pet-poetry.workspace = true
|
|
pet-reporter.workspace = true
|
|
pet-virtualenv.workspace = true
|
|
pet.workspace = true
|
|
project.workspace = true
|
|
regex.workspace = true
|
|
rope.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
serde_json_lenient.workspace = true
|
|
settings.workspace = true
|
|
smallvec.workspace = true
|
|
semver.workspace = true
|
|
smol.workspace = true
|
|
snippet.workspace = true
|
|
task.workspace = true
|
|
terminal.workspace = true
|
|
theme.workspace = true
|
|
tree-sitter = { workspace = true, optional = true }
|
|
tree-sitter-gitcommit = { workspace = true, optional = true }
|
|
url.workspace = true
|
|
util.workspace = true
|
|
|
|
[dev-dependencies]
|
|
fs = { workspace = true, features = ["test-support"] }
|
|
pretty_assertions.workspace = true
|
|
tempfile = { workspace = true}
|
|
settings = { workspace = true, features = ["test-support"] }
|
|
theme = { workspace = true, features = ["test-support"] }
|
|
tree-sitter-bash.workspace = true
|
|
tree-sitter-c.workspace = true
|
|
tree-sitter-cpp.workspace = true
|
|
tree-sitter-css.workspace = true
|
|
tree-sitter-go.workspace = true
|
|
tree-sitter-python.workspace = true
|
|
tree-sitter-rust.workspace = true
|
|
tree-sitter-typescript.workspace = true
|
|
tree-sitter.workspace = true
|
|
unindent.workspace = true
|