Skip to content

Commit 1fc3668

Browse files
committed
refactor(toml): Use exhaustive destructure to ensure we inherit dep fields
1 parent e8ba122 commit 1fc3668

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

Diff for: src/cargo/util/toml/mod.rs

+17-4
Original file line numberDiff line numberDiff line change
@@ -990,7 +990,20 @@ fn inner_dependency_inherit_with<'a>(
990990
},
991991
manifest::TomlDependency::Detailed(ws_dep) => ws_dep.clone(),
992992
};
993-
match (pkg_dep.default_features(), merged_dep.default_features()) {
993+
let manifest::TomlInheritedDependency {
994+
workspace: _,
995+
996+
features,
997+
optional,
998+
default_features,
999+
default_features2,
1000+
public,
1001+
1002+
_unused_keys: _,
1003+
} = &pkg_dep;
1004+
let default_features = default_features.or(*default_features2);
1005+
1006+
match (default_features, merged_dep.default_features()) {
9941007
// member: default-features = true and
9951008
// workspace: default-features = false should turn on
9961009
// default-features
@@ -1010,7 +1023,7 @@ fn inner_dependency_inherit_with<'a>(
10101023
}
10111024
_ => {}
10121025
}
1013-
merged_dep.features = match (merged_dep.features.clone(), pkg_dep.features.clone()) {
1026+
merged_dep.features = match (merged_dep.features.clone(), features.clone()) {
10141027
(Some(dep_feat), Some(inherit_feat)) => Some(
10151028
dep_feat
10161029
.into_iter()
@@ -1021,8 +1034,8 @@ fn inner_dependency_inherit_with<'a>(
10211034
(None, Some(inherit_feat)) => Some(inherit_feat),
10221035
(None, None) => None,
10231036
};
1024-
merged_dep.optional = pkg_dep.optional;
1025-
merged_dep.public = pkg_dep.public;
1037+
merged_dep.optional = *optional;
1038+
merged_dep.public = *public;
10261039
manifest::TomlDependency::Detailed(merged_dep)
10271040
})
10281041
}

0 commit comments

Comments
 (0)