mirror of
https://github.com/rust-lang/cargo.git
synced 2025-09-25 11:14:46 +00:00
impl workspace hint for boolean dependencies
hint for only bad dependency true literal and rename unit test to match
This commit is contained in:
parent
7e78c54630
commit
5dd597b621
@ -787,12 +787,26 @@ impl<'de, P: Deserialize<'de> + Clone> de::Deserialize<'de> for TomlDependency<P
|
||||
where
|
||||
D: de::Deserializer<'de>,
|
||||
{
|
||||
use serde::de::Error as _;
|
||||
let expected = "a version string like \"0.9.8\" or a \
|
||||
detailed dependency like { version = \"0.9.8\" }";
|
||||
UntaggedEnumVisitor::new()
|
||||
.expecting(
|
||||
"a version string like \"0.9.8\" or a \
|
||||
detailed dependency like { version = \"0.9.8\" }",
|
||||
)
|
||||
.expecting(expected)
|
||||
.string(|value| Ok(TomlDependency::Simple(value.to_owned())))
|
||||
.bool(|value| {
|
||||
let expected = format!("invalid type: boolean `{value}`, expected {expected}");
|
||||
let err = if value {
|
||||
format!(
|
||||
"{expected}\n\
|
||||
note: if you meant to use a workspace member, you can write\n \
|
||||
dep.workspace = {value}"
|
||||
)
|
||||
} else {
|
||||
expected
|
||||
};
|
||||
|
||||
Err(serde_untagged::de::Error::custom(err))
|
||||
})
|
||||
.map(|value| value.deserialize().map(TomlDependency::Detailed))
|
||||
.deserialize(deserializer)
|
||||
}
|
||||
|
@ -2642,7 +2642,7 @@ fn bad_dependency() {
|
||||
}
|
||||
|
||||
#[cargo_test]
|
||||
fn bad_boolean_dependency() {
|
||||
fn bad_dependency_true_literal() {
|
||||
let p = project()
|
||||
.file(
|
||||
"Cargo.toml",
|
||||
@ -2664,6 +2664,8 @@ fn bad_boolean_dependency() {
|
||||
.with_status(101)
|
||||
.with_stderr_data(str![[r#"
|
||||
[ERROR] invalid type: boolean `true`, expected a version string like "0.9.8" or a detailed dependency like { version = "0.9.8" }
|
||||
[NOTE] if you meant to use a workspace member, you can write
|
||||
dep.workspace = true
|
||||
--> Cargo.toml:9:23
|
||||
|
|
||||
9 | bar = true
|
||||
|
Loading…
x
Reference in New Issue
Block a user