Skip to content

Commit 503a867

Browse files
committed
Another way to fix
1 parent ba8cfe1 commit 503a867

File tree

3 files changed

+7
-39
lines changed

3 files changed

+7
-39
lines changed

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ clap = "2.31.2"
6767
unicode-width = "0.1.5"
6868
openssl = { version = '0.10.11', optional = true }
6969
im-rc = "15.0.0"
70-
itertools = "0.10.0"
7170

7271
# A noop dependency that changes in the Rust repository, it's a bit of a hack.
7372
# See the `src/tools/rustc-workspace-hack/README.md` file in `rust-lang/rust`

src/cargo/core/workspace.rs

Lines changed: 6 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ use std::slice;
77

88
use anyhow::{bail, Context as _};
99
use glob::glob;
10-
use itertools::Itertools;
1110
use log::debug;
1211
use url::Url;
1312

@@ -1220,9 +1219,11 @@ impl<'cfg> Workspace<'cfg> {
12201219
dep_prefix: _,
12211220
weak: _,
12221221
} => {
1223-
// Check if `dep_name` is member of the workspace or package.
1222+
// Check if `dep_name` is member of the workspace, but isn't associated with current package.
12241223
// Weak can be ignored for this moment.
1225-
let is_member = self.members().any(|member| member.name() == *dep_name);
1224+
let is_member = self.members().any(|member| {
1225+
self.current_opt() != Some(member) && member.name() == *dep_name
1226+
});
12261227
if is_member && specs.iter().any(|spec| spec.name() == *dep_name) {
12271228
member_specific_features
12281229
.entry(*dep_name)
@@ -1300,40 +1301,8 @@ impl<'cfg> Workspace<'cfg> {
13001301
.collect();
13011302

13021303
// If any member specific features were not removed while iterating over members
1303-
if !member_specific_features.is_empty() {
1304-
let unknown: Vec<_> = member_specific_features
1305-
.values()
1306-
.map(|set| set.iter())
1307-
.flatten()
1308-
.sorted_by_key(|feature| feature.to_string())
1309-
.collect();
1310-
1311-
if self.is_virtual() {
1312-
bail!(
1313-
"None of the selected packages contains these features: {}",
1314-
unknown.iter().join(", "),
1315-
);
1316-
} else {
1317-
bail!(
1318-
"None of the selected packages contains these features: {}, did you mean: {}?",
1319-
unknown.iter().join(", "),
1320-
unknown
1321-
.iter()
1322-
.map(|feature| match feature {
1323-
// Remove package prefix from feature
1324-
FeatureValue::DepFeature {
1325-
dep_name: _,
1326-
dep_feature,
1327-
dep_prefix: false,
1328-
weak: _,
1329-
} => FeatureValue::new(*dep_feature),
1330-
// Member specific features by definition contain only `FeatureValue::DepFeature`
1331-
_ => unreachable!(),
1332-
})
1333-
.join(", ")
1334-
);
1335-
}
1336-
}
1304+
// some features will be ignored.
1305+
assert!(member_specific_features.is_empty());
13371306

13381307
Ok(result)
13391308
}

tests/testsuite/package_features.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ fn feature_default_resolver() {
313313
p.cargo("run --features a/test")
314314
.masquerade_as_nightly_cargo()
315315
.with_status(101)
316-
.with_stderr("[ERROR] None of the selected packages contains these features: a/test, did you mean: test?")
316+
.with_stderr("[ERROR] package `a[..]` does not have a dependency named `a`")
317317
.run();
318318
}
319319

0 commit comments

Comments
 (0)