Skip to content

Commit 078383b

Browse files
committed
fix(fix): Dont remove features when making implicit features explicit
1 parent fbe1cd1 commit 078383b

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

src/cargo/ops/fix.rs

+8-7
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

+3-3
Original file line numberDiff line numberDiff line change
@@ -2705,7 +2705,7 @@ unrelated-dep-feature = ["unrelated-feature/a", "unrelated-feature/b"]
27052705
.with_stderr(
27062706
"\
27072707
[MIGRATING] Cargo.toml from 2021 edition to 2024
2708-
[FIXED] Cargo.toml (3 fixes)
2708+
[FIXED] Cargo.toml (1 fix)
27092709
[UPDATING] `dummy-registry` index
27102710
[LOCKING] 5 packages to latest compatible versions
27112711
[CHECKING] foo v0.1.0 ([CWD])
@@ -2730,10 +2730,10 @@ renamed-feature = { version = "0.1.0", optional = true }
27302730
unrelated-feature = { version = "0.1.0", optional = true }
27312731
27322732
[features]
2733-
dep-feature = ["dep:dep-feature"]
2733+
dep-feature = ["dep-feature/a", "dep-feature/b"]
27342734
dep-and-dep-feature = ["dep:dep-and-dep-feature", "dep-and-dep-feature/a", "dep-and-dep-feature/b"]
27352735
renamed = ["renamed-feature/a", "renamed-feature/b"]
2736-
unrelated-feature = ["dep:unrelated-feature"]
2736+
unrelated-feature = []
27372737
unrelated-dep-feature = ["unrelated-feature/a", "unrelated-feature/b"]
27382738
renamed-feature = ["dep:renamed-feature"]
27392739

0 commit comments

Comments
 (0)