From fab135885cae9ba393776fe8cea7db19557bd5ab Mon Sep 17 00:00:00 2001 From: Eric Huss Date: Wed, 4 Jan 2023 18:44:51 -0800 Subject: [PATCH] Fix panic on ignored target dependency. --- src/cargo/util/toml/mod.rs | 9 +++------ tests/testsuite/bad_config.rs | 28 ++++++++++++++++++++++------ 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/cargo/util/toml/mod.rs b/src/cargo/util/toml/mod.rs index 2424068b847..79a41aa32f9 100644 --- a/src/cargo/util/toml/mod.rs +++ b/src/cargo/util/toml/mod.rs @@ -1861,8 +1861,7 @@ impl TomlManifest { None, &workspace_config, &inherit_cell, - ) - .unwrap(); + )?; if platform.build_dependencies.is_some() && platform.build_dependencies2.is_some() { warn_on_deprecated("build-dependencies", name, "platform target", cx.warnings); } @@ -1876,8 +1875,7 @@ impl TomlManifest { Some(DepKind::Build), &workspace_config, &inherit_cell, - ) - .unwrap(); + )?; if platform.dev_dependencies.is_some() && platform.dev_dependencies2.is_some() { warn_on_deprecated("dev-dependencies", name, "platform target", cx.warnings); } @@ -1891,8 +1889,7 @@ impl TomlManifest { Some(DepKind::Development), &workspace_config, &inherit_cell, - ) - .unwrap(); + )?; target.insert( name.clone(), TomlPlatform { diff --git a/tests/testsuite/bad_config.rs b/tests/testsuite/bad_config.rs index 590ea57b187..179474658a0 100644 --- a/tests/testsuite/bad_config.rs +++ b/tests/testsuite/bad_config.rs @@ -1141,16 +1141,32 @@ fn ignored_git_revision() { .file("src/lib.rs", "") .build(); - foo.cargo("build -v") - .with_status(101) - .with_stderr( - "\ + let err_msg = "\ error: failed to parse manifest at `[..]` Caused by: key `branch` is ignored for dependency (bar). -", - ) +"; + foo.cargo("build -v") + .with_status(101) + .with_stderr(err_msg) + .run(); + + // #11540, check that [target] dependencies fail the same way. + foo.change_file( + "Cargo.toml", + r#" + [package] + name = "foo" + version = "0.0.0" + + [target.some-target.dependencies] + bar = { path = "bar", branch = "spam" } + "#, + ); + foo.cargo("build") + .with_status(101) + .with_stderr(err_msg) .run(); }