mirror of
https://github.com/rust-lang/cargo.git
synced 2025-10-01 11:30:39 +00:00
Fix --feature pkg/feat for V1 resolver for non-member.
This commit is contained in:
parent
5c8922ecf2
commit
6b320cb801
@ -1091,7 +1091,8 @@ impl<'cfg> Workspace<'cfg> {
|
|||||||
for feature in requested_features.features.iter() {
|
for feature in requested_features.features.iter() {
|
||||||
if let Some(index) = feature.find('/') {
|
if let Some(index) = feature.find('/') {
|
||||||
let name = &feature[..index];
|
let name = &feature[..index];
|
||||||
if specs.iter().any(|spec| spec.name() == name) {
|
let is_member = self.members().any(|member| member.name() == name);
|
||||||
|
if is_member && specs.iter().any(|spec| spec.name() == name) {
|
||||||
member_specific_features
|
member_specific_features
|
||||||
.entry(name)
|
.entry(name)
|
||||||
.or_default()
|
.or_default()
|
||||||
|
@ -458,3 +458,34 @@ fn resolver1_member_features() {
|
|||||||
.with_stdout("m1-feature set")
|
.with_stdout("m1-feature set")
|
||||||
.run();
|
.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cargo_test]
|
||||||
|
fn resolver1_non_member_optional_feature() {
|
||||||
|
// --features x/y for an optional dependency `x` with the v1 resolver.
|
||||||
|
Package::new("bar", "1.0.0")
|
||||||
|
.feature("feat1", &[])
|
||||||
|
.file(
|
||||||
|
"src/lib.rs",
|
||||||
|
r#"
|
||||||
|
#[cfg(not(feature = "feat1"))]
|
||||||
|
compile_error!("feat1 should be activated");
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.publish();
|
||||||
|
let p = project()
|
||||||
|
.file(
|
||||||
|
"Cargo.toml",
|
||||||
|
r#"
|
||||||
|
[package]
|
||||||
|
name = "foo"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
bar = { version="1.0", optional=true }
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.file("src/lib.rs", "")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
p.cargo("check -p bar --features bar/feat1").run();
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user