{"record":{"id":"41fbaace61305e78","repo":"rust-lang/cargo","slug":"dependency-specified-without-providing-a-loca","errorCode":null,"errorMessage":"dependency ({}) specified without providing a local path, Git repository, or version","messagePattern":"dependency \\((.+?)\\) specified without providing a local path, Git repository, or version","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/ops/cargo_add/mod.rs","lineNumber":671,"sourceCode":"    gctx: &GlobalContext,\n    dependency: &mut Dependency,\n) -> CargoResult<crate::workspace::Dependency> {\n    let query = dependency.query(gctx)?;\n    let query = match query {\n        MaybeWorkspace::Workspace(_workspace) => {\n            let dep = find_workspace_dep(\n                dependency.toml_key(),\n                ws,\n                ws.root_manifest(),\n                ws.unstable_features(),\n            )?;\n            if let Some(features) = dep.features.clone() {\n                *dependency = dependency.clone().set_inherited_features(features);\n            }\n            let query = dep.query(gctx)?;\n            match query {\n                MaybeWorkspace::Workspace(_) => {\n                    anyhow::bail!(\n                        \"dependency ({}) specified without \\\n                        providing a local path, Git repository, or version\",\n                        dependency.toml_key()\n                    );\n                }\n                MaybeWorkspace::Other(query) => query,\n            }\n        }\n        MaybeWorkspace::Other(query) => query,\n    };\n    Ok(query)\n}\n\nfn fuzzy_lookup(\n    dependency: &mut Dependency,\n    lookup: impl Fn(&str) -> CargoResult<Option<Dependency>>,\n    gctx: &GlobalContext,\n) -> CargoResult<Option<Dependency>> {","sourceCodeStart":653,"sourceCodeEnd":689,"githubUrl":"https://github.com/rust-lang/cargo/blob/98a09e7e7d62850f14e5b6132101fc1edd19a16f/src/ops/cargo_add/mod.rs#L653-L689","documentation":"Thrown during dependency resolution in query_dependency() when a workspace dependency (declared in [workspace.dependencies]) has no version, path, or git source specified, and querying it returns MaybeWorkspace::Workspace recursively — meaning the workspace definition itself is incomplete and has no concrete source to resolve.","triggerScenarios":"A package depends on a workspace dependency (via `dep.workspace = true`) where the corresponding [workspace.dependencies] entry lacks version, path, git, or workspace source information. The double MaybeWorkspace::Workspace match at line 667 indicates the workspace entry points back to itself.","commonSituations":"Incomplete [workspace.dependencies] table where an entry was added as a placeholder without a source. Refactoring that removed the version/path from a workspace dependency but left references in member crates.","solutions":["Add a version, path, or git source to the [workspace.dependencies] entry in the workspace root Cargo.toml","If the dependency should be a path dependency within the workspace, add `path = \"../member\"` to the workspace dependency entry","Remove the broken workspace dependency reference from the member crate if it is no longer needed"],"exampleFix":"# before (workspace root Cargo.toml)\n[workspace.dependencies]\nmy-crate = {}\n# error: dependency (my-crate) specified without providing a\n# local path, Git repository, or version\n\n# after\n[workspace.dependencies]\nmy-crate = \"1.0\"","handlingStrategy":"validation","validationCode":"// Validate workspace dependency has a source before use\nfn validate_workspace_dep(ws_toml: &toml::Value, key: &str) -> Result<(), String> {\n    let dep = ws_toml[\"workspace\"][\"dependencies\"]\n        .get(key)\n        .ok_or_else(|| format!(\"workspace dependency `{key}` not found\"))?;\n    let has_source = dep.get(\"version\").is_some()\n        || dep.get(\"path\").is_some()\n        || dep.get(\"git\").is_some()\n        || dep.get(\"workspace\").is_some();\n    if !has_source {\n        return Err(format!(\"workspace dependency `{key}` has no version, path, or git source\"));\n    }\n    Ok(())\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always provide version, path, or git for every [workspace.dependencies] entry","Run cargo check after adding workspace dependencies to catch incomplete entries early","Use CI validation to ensure all workspace dependency entries have concrete sources"],"tags":["cargo-add","workspace","dependency"],"backgroundTag":null,"analyzedSha":"98a09e7e7d62850f14e5b6132101fc1edd19a16f","analyzedAt":"2026-08-11T17:42:36.556Z","contentChangedAt":"2026-08-11T17:42:36.556Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}