Skip to content

Commit 656107a

Browse files
committed
refactor(toml): Allow adding errors to ws dep inheritance
1 parent 7f2c706 commit 656107a

File tree

1 file changed

+53
-54
lines changed

1 file changed

+53
-54
lines changed

src/cargo/util/toml/mod.rs

Lines changed: 53 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -970,62 +970,61 @@ fn inner_dependency_inherit_with<'a>(
970970
package_root: &Path,
971971
warnings: &mut Vec<String>,
972972
) -> CargoResult<manifest::TomlDependency> {
973-
inherit()?.get_dependency(name, package_root).map(|ws_dep| {
974-
let mut merged_dep = match ws_dep {
975-
manifest::TomlDependency::Simple(ws_version) => manifest::TomlDetailedDependency {
976-
version: Some(ws_version),
977-
..Default::default()
978-
},
979-
manifest::TomlDependency::Detailed(ws_dep) => ws_dep.clone(),
980-
};
981-
let manifest::TomlInheritedDependency {
982-
workspace: _,
973+
let ws_dep = inherit()?.get_dependency(name, package_root)?;
974+
let mut merged_dep = match ws_dep {
975+
manifest::TomlDependency::Simple(ws_version) => manifest::TomlDetailedDependency {
976+
version: Some(ws_version),
977+
..Default::default()
978+
},
979+
manifest::TomlDependency::Detailed(ws_dep) => ws_dep.clone(),
980+
};
981+
let manifest::TomlInheritedDependency {
982+
workspace: _,
983983

984-
features,
985-
optional,
986-
default_features,
987-
default_features2,
988-
public,
989-
990-
_unused_keys: _,
991-
} = &pkg_dep;
992-
let default_features = default_features.or(*default_features2);
993-
994-
match (default_features, merged_dep.default_features()) {
995-
// member: default-features = true and
996-
// workspace: default-features = false should turn on
997-
// default-features
998-
(Some(true), Some(false)) => {
999-
merged_dep.default_features = Some(true);
1000-
}
1001-
// member: default-features = false and
1002-
// workspace: default-features = true should ignore member
1003-
// default-features
1004-
(Some(false), Some(true)) => {
1005-
deprecated_ws_default_features(name, Some(true), warnings);
1006-
}
1007-
// member: default-features = false and
1008-
// workspace: dep = "1.0" should ignore member default-features
1009-
(Some(false), None) => {
1010-
deprecated_ws_default_features(name, None, warnings);
1011-
}
1012-
_ => {}
984+
features,
985+
optional,
986+
default_features,
987+
default_features2,
988+
public,
989+
990+
_unused_keys: _,
991+
} = &pkg_dep;
992+
let default_features = default_features.or(*default_features2);
993+
994+
match (default_features, merged_dep.default_features()) {
995+
// member: default-features = true and
996+
// workspace: default-features = false should turn on
997+
// default-features
998+
(Some(true), Some(false)) => {
999+
merged_dep.default_features = Some(true);
10131000
}
1014-
merged_dep.features = match (merged_dep.features.clone(), features.clone()) {
1015-
(Some(dep_feat), Some(inherit_feat)) => Some(
1016-
dep_feat
1017-
.into_iter()
1018-
.chain(inherit_feat)
1019-
.collect::<Vec<String>>(),
1020-
),
1021-
(Some(dep_fet), None) => Some(dep_fet),
1022-
(None, Some(inherit_feat)) => Some(inherit_feat),
1023-
(None, None) => None,
1024-
};
1025-
merged_dep.optional = *optional;
1026-
merged_dep.public = *public;
1027-
manifest::TomlDependency::Detailed(merged_dep)
1028-
})
1001+
// member: default-features = false and
1002+
// workspace: default-features = true should ignore member
1003+
// default-features
1004+
(Some(false), Some(true)) => {
1005+
deprecated_ws_default_features(name, Some(true), warnings);
1006+
}
1007+
// member: default-features = false and
1008+
// workspace: dep = "1.0" should ignore member default-features
1009+
(Some(false), None) => {
1010+
deprecated_ws_default_features(name, None, warnings);
1011+
}
1012+
_ => {}
1013+
}
1014+
merged_dep.features = match (merged_dep.features.clone(), features.clone()) {
1015+
(Some(dep_feat), Some(inherit_feat)) => Some(
1016+
dep_feat
1017+
.into_iter()
1018+
.chain(inherit_feat)
1019+
.collect::<Vec<String>>(),
1020+
),
1021+
(Some(dep_fet), None) => Some(dep_fet),
1022+
(None, Some(inherit_feat)) => Some(inherit_feat),
1023+
(None, None) => None,
1024+
};
1025+
merged_dep.optional = *optional;
1026+
merged_dep.public = *public;
1027+
Ok(manifest::TomlDependency::Detailed(merged_dep))
10291028
}
10301029

10311030
fn deprecated_ws_default_features(

0 commit comments

Comments
 (0)