@@ -7,7 +7,6 @@ use std::slice;
7
7
8
8
use anyhow:: { bail, Context as _} ;
9
9
use glob:: glob;
10
- use itertools:: Itertools ;
11
10
use log:: debug;
12
11
use url:: Url ;
13
12
@@ -1220,9 +1219,11 @@ impl<'cfg> Workspace<'cfg> {
1220
1219
dep_prefix : _,
1221
1220
weak : _,
1222
1221
} => {
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.
1224
1223
// 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
+ } ) ;
1226
1227
if is_member && specs. iter ( ) . any ( |spec| spec. name ( ) == * dep_name) {
1227
1228
member_specific_features
1228
1229
. entry ( * dep_name)
@@ -1300,40 +1301,8 @@ impl<'cfg> Workspace<'cfg> {
1300
1301
. collect ( ) ;
1301
1302
1302
1303
// 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( ) ) ;
1337
1306
1338
1307
Ok ( result)
1339
1308
}
0 commit comments