Skip to content

Commit 74d2af0

Browse files
committed
fix(fix): Dont remove features when making implicit features explicit
1 parent 961e5dd commit 74d2af0

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

src/cargo/ops/fix.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -456,18 +456,19 @@ fn add_feature_for_unused_deps(pkg: &Package, parent: &mut dyn toml_edit::TableL
456456
for dep in manifest.dependencies() {
457457
let dep_name_in_toml = dep.name_in_toml();
458458
if dep.is_optional() && !activated_opt_deps.contains(dep_name_in_toml.as_str()) {
459-
fixes += 1;
460459
if let Some(features) = parent
461460
.entry("features")
462461
.or_insert(toml_edit::table())
463462
.as_table_like_mut()
464463
{
465-
features.insert(
466-
dep_name_in_toml.as_str(),
467-
toml_edit::Item::Value(toml_edit::Value::Array(toml_edit::Array::from_iter(
468-
&[format!("dep:{}", dep_name_in_toml)],
469-
))),
470-
);
464+
features
465+
.entry(dep_name_in_toml.as_str())
466+
.or_insert_with(|| {
467+
fixes += 1;
468+
toml_edit::Item::Value(toml_edit::Value::Array(
469+
toml_edit::Array::from_iter(&[format!("dep:{}", dep_name_in_toml)]),
470+
))
471+
});
471472
}
472473
}
473474
}

tests/testsuite/fix.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2703,7 +2703,7 @@ unrelated-dep-feature = ["unrelated-feature/a", "unrelated-feature/b"]
27032703
.with_stderr(
27042704
"\
27052705
[MIGRATING] Cargo.toml from 2021 edition to 2024
2706-
[FIXED] Cargo.toml (3 fixes)
2706+
[FIXED] Cargo.toml (1 fix)
27072707
[UPDATING] `dummy-registry` index
27082708
[LOCKING] 5 packages to latest compatible versions
27092709
[CHECKING] foo v0.1.0 ([CWD])
@@ -2728,10 +2728,10 @@ renamed-feature = { version = "0.1.0", optional = true }
27282728
unrelated-feature = { version = "0.1.0", optional = true }
27292729
27302730
[features]
2731-
dep-feature = ["dep:dep-feature"]
2731+
dep-feature = ["dep-feature/a", "dep-feature/b"]
27322732
dep-and-dep-feature = ["dep:dep-and-dep-feature", "dep-and-dep-feature/a", "dep-and-dep-feature/b"]
27332733
renamed = ["renamed-feature/a", "renamed-feature/b"]
2734-
unrelated-feature = ["dep:unrelated-feature"]
2734+
unrelated-feature = []
27352735
unrelated-dep-feature = ["unrelated-feature/a", "unrelated-feature/b"]
27362736
renamed-feature = ["dep:renamed-feature"]
27372737

0 commit comments

Comments
 (0)