diff --git a/src/cargo/util/toml/mod.rs b/src/cargo/util/toml/mod.rs index a7954676800b..130584b0fd02 100644 --- a/src/cargo/util/toml/mod.rs +++ b/src/cargo/util/toml/mod.rs @@ -120,6 +120,9 @@ fn read_manifest_from_str( if dep.is_optional() { bail!("{name} is optional, but workspace dependencies cannot be optional",); } + if dep.is_public() { + bail!("{name} is public, but workspace dependencies cannot be public",); + } } } return if manifest.project.is_some() || manifest.package.is_some() { @@ -1664,11 +1667,6 @@ fn inner_dependency_inherit_with<'a>( } _ => {} } - // Inherit the workspace configuration for `public` unless - // it's explicitly specified for this dependency. - if let Some(public) = dependency.public { - d.public = Some(public); - } d.features = match (d.features.clone(), dependency.features.clone()) { (Some(dep_feat), Some(inherit_feat)) => Some( dep_feat diff --git a/src/cargo/util_schemas/manifest.rs b/src/cargo/util_schemas/manifest.rs index 90cc9a844990..588dca678cf3 100644 --- a/src/cargo/util_schemas/manifest.rs +++ b/src/cargo/util_schemas/manifest.rs @@ -534,6 +534,13 @@ impl TomlDependency { } } + pub fn is_public(&self) -> bool { + match self { + TomlDependency::Detailed(d) => d.public.unwrap_or(false), + TomlDependency::Simple(..) => false, + } + } + pub fn unused_keys(&self) -> Vec { match self { TomlDependency::Simple(_) => vec![], diff --git a/src/doc/src/reference/unstable.md b/src/doc/src/reference/unstable.md index b855ec1c3df8..813276cb6ef3 100644 --- a/src/doc/src/reference/unstable.md +++ b/src/doc/src/reference/unstable.md @@ -304,6 +304,9 @@ my_dep = { version = "1.2.3", public = true } private_dep = "2.0.0" # Will be 'private' by default ``` +Documentation updates: +- For workspace's "The `dependencies` table" section, include `public` as an unsupported field for `workspace.dependencies` + ## msrv-policy - [#9930](https://github.com/rust-lang/cargo/issues/9930) (MSRV-aware resolver) - [#10653](https://github.com/rust-lang/cargo/issues/10653) (MSRV-aware cargo-add)