Skip to content

Commit 1f1823c

Browse files
committed
Auto merge of #10584 - Muscraft:rfc2906-part9, r=epage
Prefer `key.workspace = true` to `key = { workspace = true }` Tracking issue: #8415 RFC: rust-lang/rfcs#2906 Part 1: #10497 Part 2: #10517 Part 3: #10538 Part 4: #10548 Part 5: #10563 Part 6: #10564 Part 7: #10565 Part 8: #10568 This PR fell out of [this discussion](#10497 (comment)) regarding if `key.workspace = true` is better than `key = { workspace = true }`. Changes: - Made all fields into `field.workspace = true` - Made dependencies into `dep.workspace = true` when a they only specify `{ workspace = true }` Remaining implementation work for the RFC - `cargo-add` support, see [epage's comment](#8415 (comment)) - Optimizations as needed
2 parents edffc4a + a18b97f commit 1f1823c

File tree

3 files changed

+72
-71
lines changed

3 files changed

+72
-71
lines changed

src/cargo/util/toml/mod.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,9 @@ pub fn read_manifest_from_str(
130130
}
131131
if let TomlDependency::Workspace(_) = dep {
132132
bail!(
133-
"`workspace.dependencies.{}` specified `{{ workspace = true }}`, but \
134-
workspace dependencies cannot do this",
133+
"{} was specified as `workspace.dependencies.{}.workspace = true`, but \
134+
workspace dependencies cannot specify `workspace = true`",
135+
name,
135136
name
136137
);
137138
}
@@ -225,7 +226,7 @@ pub enum TomlDependency<P: Clone = String> {
225226
/// In the simple format, only a version is specified, eg.
226227
/// `package = "<version>"`
227228
Simple(String),
228-
/// `package = { workspace = true }`
229+
/// `package.workspace = true`
229230
Workspace(TomlWorkspaceDependency),
230231
/// The simple format is equivalent to a detailed dependency
231232
/// specifying only a version, eg.
@@ -990,7 +991,7 @@ where
990991
deserializer.deserialize_any(Visitor)
991992
}
992993

993-
/// Enum that allows for the parsing of { workspace = true } in a Cargo.toml
994+
/// Enum that allows for the parsing of `field.workspace = true` in a Cargo.toml
994995
///
995996
/// It allows for things to be inherited from a workspace or defined as needed
996997
#[derive(Deserialize, Serialize, Clone, Debug)]

src/doc/src/reference/unstable.md

+14-14
Original file line numberDiff line numberDiff line change
@@ -1432,8 +1432,8 @@ wasm-bindgen-cli = { path = "crates/cli" }
14321432
```toml
14331433
# in a workspace member's Cargo.toml
14341434
[dependencies]
1435-
log = { workspace = true }
1436-
log2 = { workspace = true }
1435+
log.workspace = true
1436+
log2.workspace = true
14371437
```
14381438

14391439
Example 2:
@@ -1458,16 +1458,16 @@ edition = "2018"
14581458
```toml
14591459
# in a workspace member's Cargo.toml
14601460
[package]
1461-
version = { workspace = true }
1462-
authors = { workspace = true }
1463-
description = { workspace = true }
1464-
documentation = { workspace = true }
1465-
readme = { workspace = true }
1466-
homepage = { workspace = true }
1467-
repository = { workspace = true }
1468-
license = { workspace = true }
1469-
license-file = { workspace = true }
1470-
keywords = { workspace = true }
1471-
categories = { workspace = true }
1472-
publish = { workspace = true }
1461+
version.workspace = true
1462+
authors.workspace = true
1463+
description.workspace = true
1464+
documentation.workspace = true
1465+
readme.workspace = true
1466+
homepage.workspace = true
1467+
repository.workspace = true
1468+
license.workspace = true
1469+
license-file.workspace = true
1470+
keywords.workspace = true
1471+
categories.workspace = true
1472+
publish.workspace = true
14731473
```

tests/testsuite/inheritable_workspace_fields.rs

+53-53
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//! Tests for inheriting Cargo.toml fields with { workspace = true }
1+
//! Tests for inheriting Cargo.toml fields with field.workspace = true
22
use cargo_test_support::registry::{Dependency, Package};
33
use cargo_test_support::{
44
basic_lib_manifest, basic_manifest, git, path2url, paths, project, publish, registry,
@@ -119,24 +119,24 @@ fn inherit_own_workspace_fields() {
119119
"Cargo.toml",
120120
r#"
121121
cargo-features = ["workspace-inheritance"]
122-
badges = { workspace = true }
122+
badges.workspace = true
123123
124124
[package]
125125
name = "foo"
126-
version = { workspace = true }
127-
authors = { workspace = true }
128-
description = { workspace = true }
129-
documentation = { workspace = true }
130-
homepage = { workspace = true }
131-
repository = { workspace = true }
132-
license = { workspace = true }
133-
keywords = { workspace = true }
134-
categories = { workspace = true }
135-
publish = { workspace = true }
136-
edition = { workspace = true }
137-
rust-version = { workspace = true }
138-
exclude = { workspace = true }
139-
include = { workspace = true }
126+
version.workspace = true
127+
authors.workspace = true
128+
description.workspace = true
129+
documentation.workspace = true
130+
homepage.workspace = true
131+
repository.workspace = true
132+
license.workspace = true
133+
keywords.workspace = true
134+
categories.workspace = true
135+
publish.workspace = true
136+
edition.workspace = true
137+
rust-version.workspace = true
138+
exclude.workspace = true
139+
include.workspace = true
140140
141141
[workspace]
142142
members = []
@@ -251,13 +251,13 @@ fn inherit_own_dependencies() {
251251
authors = []
252252
253253
[dependencies]
254-
dep = { workspace = true }
254+
dep.workspace = true
255255
256256
[build-dependencies]
257-
dep-build = { workspace = true }
257+
dep-build.workspace = true
258258
259259
[dev-dependencies]
260-
dep-dev = { workspace = true }
260+
dep-dev.workspace = true
261261
262262
[workspace]
263263
members = []
@@ -393,7 +393,7 @@ fn inherit_own_detailed_dependencies() {
393393
authors = []
394394
395395
[dependencies]
396-
dep = { workspace = true }
396+
dep.workspace = true
397397
398398
[workspace]
399399
members = []
@@ -501,7 +501,7 @@ fn inherit_from_own_undefined_field() {
501501
name = "foo"
502502
version = "1.2.5"
503503
authors = ["rustaceans"]
504-
description = { workspace = true }
504+
description.workspace = true
505505
506506
[workspace]
507507
members = []
@@ -623,27 +623,27 @@ fn inherit_workspace_fields() {
623623
.file(
624624
"bar/Cargo.toml",
625625
r#"
626-
badges = { workspace = true }
626+
badges.workspace = true
627627
cargo-features = ["workspace-inheritance"]
628628
[package]
629629
name = "bar"
630630
workspace = ".."
631-
version = { workspace = true }
632-
authors = { workspace = true }
633-
description = { workspace = true }
634-
documentation = { workspace = true }
635-
readme = { workspace = true }
636-
homepage = { workspace = true }
637-
repository = { workspace = true }
638-
license = { workspace = true }
639-
license-file = { workspace = true }
640-
keywords = { workspace = true }
641-
categories = { workspace = true }
642-
publish = { workspace = true }
643-
edition = { workspace = true }
644-
rust-version = { workspace = true }
645-
exclude = { workspace = true }
646-
include = { workspace = true }
631+
version.workspace = true
632+
authors.workspace = true
633+
description.workspace = true
634+
documentation.workspace = true
635+
readme.workspace = true
636+
homepage.workspace = true
637+
repository.workspace = true
638+
license.workspace = true
639+
license-file.workspace = true
640+
keywords.workspace = true
641+
categories.workspace = true
642+
publish.workspace = true
643+
edition.workspace = true
644+
rust-version.workspace = true
645+
exclude.workspace = true
646+
include.workspace = true
647647
"#,
648648
)
649649
.file("LICENSE", "license")
@@ -758,11 +758,11 @@ fn inherit_dependencies() {
758758
version = "0.2.0"
759759
authors = []
760760
[dependencies]
761-
dep = { workspace = true }
761+
dep.workspace = true
762762
[build-dependencies]
763-
dep-build = { workspace = true }
763+
dep-build.workspace = true
764764
[dev-dependencies]
765-
dep-dev = { workspace = true }
765+
dep-dev.workspace = true
766766
"#,
767767
)
768768
.file("bar/src/main.rs", "fn main() {}")
@@ -901,9 +901,9 @@ fn inherit_target_dependencies() {
901901
version = "0.2.0"
902902
authors = []
903903
[target.'cfg(unix)'.dependencies]
904-
dep = { workspace = true }
904+
dep.workspace = true
905905
[target.'cfg(windows)'.dependencies]
906-
dep = { workspace = true }
906+
dep.workspace = true
907907
"#,
908908
)
909909
.file("bar/src/main.rs", "fn main() {}")
@@ -1071,7 +1071,7 @@ fn inherit_detailed_dependencies() {
10711071
version = "0.2.0"
10721072
authors = []
10731073
[dependencies]
1074-
detailed = { workspace = true }
1074+
detailed.workspace = true
10751075
"#,
10761076
)
10771077
.file("bar/src/main.rs", "fn main() {}")
@@ -1116,7 +1116,7 @@ fn inherit_path_dependencies() {
11161116
version = "0.2.0"
11171117
authors = []
11181118
[dependencies]
1119-
dep = { workspace = true }
1119+
dep.workspace = true
11201120
"#,
11211121
)
11221122
.file("bar/src/main.rs", "fn main() {}")
@@ -1200,13 +1200,13 @@ fn error_workspace_dependency_looked_for_workspace_itself() {
12001200
workspace = ".."
12011201
12021202
[dependencies]
1203-
dep = { workspace = true }
1203+
dep.workspace = true
12041204
12051205
[workspace]
12061206
members = ["bar"]
12071207
12081208
[workspace.dependencies]
1209-
dep = { workspace = true }
1209+
dep.workspace = true
12101210
12111211
"#,
12121212
)
@@ -1221,8 +1221,8 @@ fn error_workspace_dependency_looked_for_workspace_itself() {
12211221
[ERROR] failed to parse manifest at `[CWD]/Cargo.toml`
12221222
12231223
Caused by:
1224-
`workspace.dependencies.dep` specified `{ workspace = true }`, but workspace dependencies \
1225-
cannot do this
1224+
dep was specified as `workspace.dependencies.dep.workspace = true`, but \
1225+
workspace dependencies cannot specify `workspace = true`
12261226
",
12271227
)
12281228
.run();
@@ -1298,7 +1298,7 @@ fn error_no_root_workspace() {
12981298
workspace = ".."
12991299
version = "1.2.3"
13001300
authors = ["rustaceans"]
1301-
description = { workspace = true }
1301+
description.workspace = true
13021302
"#,
13031303
)
13041304
.file("src/main.rs", "fn main() {}")
@@ -1347,7 +1347,7 @@ fn error_inherit_unspecified_dependency() {
13471347
version = "1.2.3"
13481348
authors = ["rustaceans"]
13491349
[dependencies]
1350-
foo = { workspace = true }
1350+
foo.workspace = true
13511351
"#,
13521352
)
13531353
.file("bar/src/main.rs", "fn main() {}")
@@ -1385,7 +1385,7 @@ fn workspace_inheritance_not_enabled() {
13851385
name = "foo"
13861386
version = "1.2.5"
13871387
authors = ["rustaceans"]
1388-
description = { workspace = true }
1388+
description.workspace = true
13891389
13901390
[workspace]
13911391
members = []
@@ -1431,7 +1431,7 @@ fn nightly_required() {
14311431
name = "foo"
14321432
version = "1.2.5"
14331433
authors = ["rustaceans"]
1434-
description = { workspace = true }
1434+
description.workspace = true
14351435
14361436
[workspace]
14371437
members = []

0 commit comments

Comments
 (0)