zed-industries/zed · error
no parent for path {:?}
Error message
no parent for path {:?} What it means
In WorktreeStore::rename_entry: the new path has no parent entry (worktree_for_id found nothing for new_project_path.worktree_id or the parent path is unresolvable), so the entry cannot be moved to the destination.
Source
Thrown at crates/project/src/worktree_store.rs:640
};
let Some(old_entry) = old_worktree.read(cx).entry_for_id(entry_id).cloned() else {
return Task::ready(Err(anyhow!("no such entry")));
};
let Some(new_worktree) = self.worktree_for_id(new_project_path.worktree_id, cx) else {
return Task::ready(Err(anyhow!("no such worktree")));
};
match &self.state {
WorktreeStoreState::Local { fs } => {
let abs_old_path = old_worktree.read(cx).absolutize(&old_entry.path);
let new_worktree_ref = new_worktree.read(cx);
let is_root_entry = new_worktree_ref
.root_entry()
.is_some_and(|e| e.id == entry_id);
let abs_new_path = if is_root_entry {
let abs_path = new_worktree_ref.abs_path();
let Some(root_parent_path) = abs_path.parent() else {
return Task::ready(Err(anyhow!("no parent for path {:?}", abs_path)));
};
root_parent_path.join(new_project_path.path.as_std_path())
} else {
new_worktree_ref.absolutize(&new_project_path.path)
};
let fs = fs.clone();
let case_sensitive = new_worktree
.read(cx)
.as_local()
.unwrap()
.fs_is_case_sensitive();
let do_rename =
async move |fs: &dyn Fs, old_path: &Path, new_path: &Path, overwrite| {
fs.rename(
&old_path,
&new_path,View on GitHub (pinned to f4178619ac)
Solutions
- Create the destination parent directory first
- Rename into an existing directory
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/project/src/worktree_store.rs:640 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/7813cb8791d39186.
Report an issue: GitHub.