Skip to content

Commit 07253b7

Browse files
committed
Auto merge of #13655 - epage:add-comment, r=weihanglo
fix(add): Preserve comments when updating simple deps ### What does this PR try to resolve? Fixes #13645 ### How should we test and review this PR? A case the tests showed but isn't covered here is when a `[features]` table is created, the dependencies-end comment gets attached to that, e.g. see cargo_add/overwrite_optional ### Additional information
2 parents 3b43aa8 + e476bd5 commit 07253b7

File tree

49 files changed

+172
-59
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+172
-59
lines changed

src/cargo/util/toml_mut/dependency.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -474,9 +474,18 @@ impl Dependency {
474474
item: &mut toml_edit::Item,
475475
) {
476476
if str_or_1_len_table(item) {
477-
// Nothing to preserve
478-
*item = self.to_toml(crate_root);
479-
key.fmt();
477+
// Little to preserve
478+
let mut new_item = self.to_toml(crate_root);
479+
match (&item, &mut new_item) {
480+
(toml_edit::Item::Value(old), toml_edit::Item::Value(new)) => {
481+
*new.decor_mut() = old.decor().clone();
482+
}
483+
(toml_edit::Item::Table(old), toml_edit::Item::Table(new)) => {
484+
*new.decor_mut() = old.decor().clone();
485+
}
486+
(_, _) => {}
487+
}
488+
*item = new_item;
480489
} else if let Some(table) = item.as_table_like_mut() {
481490
match &self.source {
482491
Some(Source::Registry(src)) => {

tests/testsuite/cargo_add/overwrite_default_features/in/Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package1 = "99999.0.0"
10-
my-package2 = "0.4.1"
9+
# Before my-package1
10+
my-package1 = "99999.0.0" # After my-package1
11+
# Before my-package2
12+
my-package2 = "0.4.1" # After my-package2
13+
# End

tests/testsuite/cargo_add/overwrite_default_features/out/Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package1 = "99999.0.0"
10-
my-package2 = "0.4.1"
9+
# Before my-package1
10+
my-package1 = "99999.0.0" # After my-package1
11+
# Before my-package2
12+
my-package2 = "0.4.1" # After my-package2
13+
# End

tests/testsuite/cargo_add/overwrite_default_features_with_no_default_features/in/Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package1 = { version = "99999.0.0", default-features = true }
10-
my-package2 = { version = "0.4.1", default-features = true }
9+
# Before my-package1
10+
my-package1 = { version = "99999.0.0", default-features = true } # After my-package1
11+
# Before my-package2
12+
my-package2 = { version = "0.4.1", default-features = true } # After my-package2
13+
# End

tests/testsuite/cargo_add/overwrite_default_features_with_no_default_features/out/Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package1 = { version = "99999.0.0", default-features = false }
10-
my-package2 = { version = "0.4.1", default-features = false }
9+
# Before my-package1
10+
my-package1 = { version = "99999.0.0", default-features = false } # After my-package1
11+
# Before my-package2
12+
my-package2 = { version = "0.4.1", default-features = false } # After my-package2
13+
# End

tests/testsuite/cargo_add/overwrite_features/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
your-face = { version = "99999.0.0", features = ["eyes"] }
9+
# Before your-face
10+
your-face = { version = "99999.0.0", features = ["eyes"] } # After your-face
11+
# End

tests/testsuite/cargo_add/overwrite_features/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
your-face = { version = "99999.0.0", features = ["eyes", "nose"] }
9+
# Before your-face
10+
your-face = { version = "99999.0.0", features = ["eyes", "nose"] } # After your-face
11+
# End

tests/testsuite/cargo_add/overwrite_inline_features/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
your-face = { version = "99999.0.0", features = ["eyes"] }
9+
# Before your-face
10+
your-face = { version = "99999.0.0", features = ["eyes"] } # After your-face
11+
# End

tests/testsuite/cargo_add/overwrite_inline_features/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ edition = "2015"
77

88
[dependencies]
99
unrelateed-crate = "99999.0.0"
10-
your-face = { version = "99999.0.0", features = ["eyes", "nose", "mouth", "ears"] }
10+
# Before your-face
11+
your-face = { version = "99999.0.0", features = ["eyes", "nose", "mouth", "ears"] } # After your-face
12+
# End

tests/testsuite/cargo_add/overwrite_name_dev_noop/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dev-dependencies]
10-
your-face = { version = "0.0.0", path = "dependency", default-features = false, features = ["nose", "mouth"], registry = "alternative" }
10+
# Before your-face
11+
your-face = { version = "0.0.0", path = "dependency", default-features = false, features = ["nose", "mouth"], registry = "alternative" } # After your-face
12+
# End

tests/testsuite/cargo_add/overwrite_name_dev_noop/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dev-dependencies]
10-
your-face = { version = "0.0.0", path = "dependency", default-features = false, features = ["nose", "mouth"], registry = "alternative" }
10+
# Before your-face
11+
your-face = { version = "0.0.0", path = "dependency", default-features = false, features = ["nose", "mouth"], registry = "alternative" } # After your-face
12+
# End

tests/testsuite/cargo_add/overwrite_name_noop/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dependencies]
10-
your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" }
10+
# Before your-face
11+
your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" } # After your-face
12+
# End

tests/testsuite/cargo_add/overwrite_name_noop/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dependencies]
10-
your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" }
10+
# Before your-face
11+
your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" } # After your-face
1112

1213
[features]
1314
your-face = ["dep:your-face"]
15+
# End

tests/testsuite/cargo_add/overwrite_no_default_features/in/Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package1 = "99999.0.0"
10-
my-package2 = "0.4.1"
9+
# Before my-package1
10+
my-package1 = "99999.0.0" # After my-package1
11+
# Before my-package2
12+
my-package2 = "0.4.1" # After my-package2
13+
# End

tests/testsuite/cargo_add/overwrite_no_default_features/out/Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package1 = { version = "99999.0.0", default-features = false }
10-
my-package2 = { version = "0.4.1", default-features = false }
9+
# Before my-package1
10+
my-package1 = { version = "99999.0.0", default-features = false } # After my-package1
11+
# Before my-package2
12+
my-package2 = { version = "0.4.1", default-features = false } # After my-package2
13+
# End

tests/testsuite/cargo_add/overwrite_no_default_features_with_default_features/in/Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package1 = { version = "99999.0.0", default-features = false }
10-
my-package2 = { version = "0.4.1", default-features = false }
9+
# Before my-package1
10+
my-package1 = { version = "99999.0.0", default-features = false } # After my-package1
11+
# Before my-package2
12+
my-package2 = { version = "0.4.1", default-features = false } # After my-package2
13+
# End

tests/testsuite/cargo_add/overwrite_no_default_features_with_default_features/out/Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package1 = { version = "99999.0.0" }
10-
my-package2 = { version = "0.4.1" }
9+
# Before my-package1
10+
my-package1 = { version = "99999.0.0" } # After my-package1
11+
# Before my-package2
12+
my-package2 = { version = "0.4.1" } # After my-package2
13+
# End

tests/testsuite/cargo_add/overwrite_no_optional/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package = "0.1.0"
9+
# Before my-package
10+
my-package = "0.1.0" # After my-package
11+
# End

tests/testsuite/cargo_add/overwrite_no_optional/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package = "0.1.0"
9+
# Before my-package
10+
my-package = "0.1.0" # After my-package
11+
# End

tests/testsuite/cargo_add/overwrite_no_optional_with_optional/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package = { version = "0.1.0", optional = false }
9+
# Before my-package
10+
my-package = { version = "0.1.0", optional = false } # After my-package
11+
# End

tests/testsuite/cargo_add/overwrite_no_optional_with_optional/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package = { version = "0.1.0", optional = true }
9+
# Before my-package
10+
my-package = { version = "0.1.0", optional = true } # After my-package
1011

1112
[features]
1213
my-package = ["dep:my-package"]
14+
# End

tests/testsuite/cargo_add/overwrite_no_public/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dependencies]
10-
my-package = "0.1.0"
10+
# Before my-package
11+
my-package = "0.1.0" # After my-package
12+
# End

tests/testsuite/cargo_add/overwrite_no_public/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dependencies]
10-
my-package = "0.1.0"
10+
# Before my-package
11+
my-package = "0.1.0" # After my-package
12+
# End

tests/testsuite/cargo_add/overwrite_no_public_with_public/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dependencies]
10-
my-package = { version = "0.1.0", public = false }
10+
# Before my-package
11+
my-package = { version = "0.1.0", public = false } # After my-package
12+
# End

tests/testsuite/cargo_add/overwrite_no_public_with_public/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dependencies]
10-
my-package = { version = "0.1.0", public = true }
10+
# Before my-package
11+
my-package = { version = "0.1.0", public = true } # After my-package
12+
# End

tests/testsuite/cargo_add/overwrite_optional/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package = "0.1.0"
9+
# Before my-package
10+
my-package = "0.1.0" # After my-package
11+
# End

tests/testsuite/cargo_add/overwrite_optional/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package = { version = "0.1.0", optional = true }
9+
# Before my-package
10+
my-package = { version = "0.1.0", optional = true } # After my-package
1011

1112
[features]
1213
my-package = ["dep:my-package"]
14+
# End

tests/testsuite/cargo_add/overwrite_optional_with_no_optional/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ default = ["your-face"]
1010
other = ["your-face/nose"]
1111

1212
[dependencies]
13-
your-face = { version = "99999.0.0", optional = true }
13+
# Before your-face
14+
your-face = { version = "99999.0.0", optional = true } # After your-face
15+
# End

tests/testsuite/cargo_add/overwrite_optional_with_no_optional/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ default = []
1010
other = ["your-face/nose"]
1111

1212
[dependencies]
13-
your-face = { version = "99999.0.0" }
13+
# Before your-face
14+
your-face = { version = "99999.0.0" } # After your-face
15+
# End

tests/testsuite/cargo_add/overwrite_optional_with_optional/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package1 = { version = "99999.0.0", optional = true }
9+
# Before my-package1
10+
my-package1 = { version = "99999.0.0", optional = true } # After my-package1
11+
# End
1012

1113
[features]
1214
default = ["dep:my-package1"]

tests/testsuite/cargo_add/overwrite_optional_with_optional/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
my-package1 = { version = "99999.0.0", optional = true }
9+
# Before my-package1
10+
my-package1 = { version = "99999.0.0", optional = true } # After my-package1
11+
# End
1012

1113
[features]
1214
default = ["dep:my-package1"]

tests/testsuite/cargo_add/overwrite_path_noop/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dependencies]
10-
your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" }
10+
# Before my-package1
11+
your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" } # After my-package1
12+
# End

tests/testsuite/cargo_add/overwrite_path_noop/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dependencies]
10-
your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" }
10+
# Before my-package1
11+
your-face = { version = "0.0.0", path = "dependency", optional = true, default-features = false, features = ["nose", "mouth"], registry = "alternative" } # After my-package1
1112

1213
[features]
1314
your-face = ["dep:your-face"]
15+
# End

tests/testsuite/cargo_add/overwrite_preserves_inline_table/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
your-face={version="99999.0.0",features=["eyes"]} # Hello world
9+
# Before my-package1
10+
your-face={version="99999.0.0",features=["eyes"]} # After my-package1
11+
# End

tests/testsuite/cargo_add/overwrite_preserves_inline_table/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
your-face={ version = "99999.0.0", features = ["eyes", "nose"] } # Hello world
9+
# Before my-package1
10+
your-face={ version = "99999.0.0", features = ["eyes", "nose"] } # After my-package1
11+
# End

tests/testsuite/cargo_add/overwrite_public/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dependencies]
10-
my-package = "0.1.0"
10+
# Before my-package
11+
my-package = "0.1.0" # After my-package
12+
# End

tests/testsuite/cargo_add/overwrite_public/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dependencies]
10-
my-package = { version = "0.1.0", public = true }
10+
# Before my-package
11+
my-package = { version = "0.1.0", public = true } # After my-package
12+
# End

tests/testsuite/cargo_add/overwrite_public_with_no_public/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dependencies]
10-
my-package = { version = "0.1.0", public = true }
10+
# Before my-package
11+
my-package = { version = "0.1.0", public = true } # After my-package
12+
# End

tests/testsuite/cargo_add/overwrite_public_with_no_public/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,6 @@ version = "0.0.0"
77
edition = "2015"
88

99
[dependencies]
10-
my-package = { version = "0.1.0" }
10+
# Before my-package
11+
my-package = { version = "0.1.0" } # After my-package
12+
# End

tests/testsuite/cargo_add/overwrite_rename_with_no_rename/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
a1 = { package = "versioned-package", version = "0.1.1", optional = true }
9+
# Before a1
10+
a1 = { package = "versioned-package", version = "0.1.1", optional = true } # After a1
11+
# End

tests/testsuite/cargo_add/overwrite_rename_with_no_rename/out/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
a1 = { package = "versioned-package", version = "0.1.1", optional = true }
9+
# Before a1
10+
a1 = { package = "versioned-package", version = "0.1.1", optional = true } # After a1
1011
versioned-package = "99999.0.0"
12+
# End

tests/testsuite/cargo_add/overwrite_rename_with_rename/in/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ version = "0.0.0"
66
edition = "2015"
77

88
[dependencies]
9-
a1 = { package = "versioned-package", version = "0.1.1", optional = true }
9+
# Before a1
10+
a1 = { package = "versioned-package", version = "0.1.1", optional = true } # After a1
11+
# End

0 commit comments

Comments
 (0)