@@ -88,7 +88,7 @@ impl Summary {
88
88
if !namespaced_features {
89
89
if self . inner . has_namespaced_features {
90
90
bail ! (
91
- "namespaced features with the `crate :` prefix are only allowed on \
91
+ "namespaced features with the `dep :` prefix are only allowed on \
92
92
the nightly channel and requires the `-Z namespaced-features` flag on the command-line"
93
93
) ;
94
94
}
@@ -158,7 +158,7 @@ impl Hash for Summary {
158
158
/// and creates FeatureValues for each feature.
159
159
///
160
160
/// The returned `bool` indicates whether or not the `[features]` table
161
- /// included a `crate :` prefixed namespaced feature (used for gating on
161
+ /// included a `dep :` prefixed namespaced feature (used for gating on
162
162
/// nightly).
163
163
fn build_feature_map (
164
164
features : & BTreeMap < InternedString , Vec < InternedString > > ,
@@ -183,18 +183,18 @@ fn build_feature_map(
183
183
( * feature, fvs)
184
184
} )
185
185
. collect ( ) ;
186
- let has_namespaced_features = map. values ( ) . flatten ( ) . any ( |fv| fv. has_crate_prefix ( ) ) ;
186
+ let has_namespaced_features = map. values ( ) . flatten ( ) . any ( |fv| fv. has_dep_prefix ( ) ) ;
187
187
188
188
// Add implicit features for optional dependencies if they weren't
189
189
// explicitly listed anywhere.
190
190
let explicitly_listed: HashSet < _ > = map
191
191
. values ( )
192
192
. flatten ( )
193
193
. filter_map ( |fv| match fv {
194
- Crate { dep_name }
195
- | CrateFeature {
194
+ Dep { dep_name }
195
+ | DepFeature {
196
196
dep_name,
197
- crate_prefix : true ,
197
+ dep_prefix : true ,
198
198
..
199
199
} => Some ( * dep_name) ,
200
200
_ => None ,
@@ -209,25 +209,25 @@ fn build_feature_map(
209
209
{
210
210
continue ;
211
211
}
212
- let fv = Crate {
212
+ let fv = Dep {
213
213
dep_name : dep_name_in_toml,
214
214
} ;
215
215
map. insert ( dep_name_in_toml, vec ! [ fv] ) ;
216
216
}
217
217
218
218
// Validate features are listed properly.
219
219
for ( feature, fvs) in & map {
220
- if feature. starts_with ( "crate :" ) {
220
+ if feature. starts_with ( "dep :" ) {
221
221
bail ! (
222
- "feature named `{}` is not allowed to start with `crate :`" ,
222
+ "feature named `{}` is not allowed to start with `dep :`" ,
223
223
feature
224
224
) ;
225
225
}
226
226
for fv in fvs {
227
227
// Find data for the referenced dependency...
228
228
let dep_data = {
229
229
match fv {
230
- Feature ( dep_name) | Crate { dep_name, .. } | CrateFeature { dep_name, .. } => {
230
+ Feature ( dep_name) | Dep { dep_name, .. } | DepFeature { dep_name, .. } => {
231
231
dep_map. get ( dep_name)
232
232
}
233
233
}
@@ -253,7 +253,7 @@ fn build_feature_map(
253
253
bail ! (
254
254
"feature `{}` includes `{}`, but `{}` is an \
255
255
optional dependency without an implicit feature\n \
256
- Use `crate :{}` to enable the dependency.",
256
+ Use `dep :{}` to enable the dependency.",
257
257
feature,
258
258
fv,
259
259
f,
@@ -268,7 +268,7 @@ fn build_feature_map(
268
268
}
269
269
}
270
270
}
271
- Crate { dep_name } => {
271
+ Dep { dep_name } => {
272
272
if !is_any_dep {
273
273
bail ! (
274
274
"feature `{}` includes `{}`, but `{}` is not listed as a dependency" ,
@@ -288,7 +288,7 @@ fn build_feature_map(
288
288
) ;
289
289
}
290
290
}
291
- CrateFeature { dep_name, .. } => {
291
+ DepFeature { dep_name, .. } => {
292
292
// Validation of the feature name will be performed in the resolver.
293
293
if !is_any_dep {
294
294
bail ! (
@@ -308,7 +308,7 @@ fn build_feature_map(
308
308
. values ( )
309
309
. flatten ( )
310
310
. filter_map ( |fv| match fv {
311
- Crate { dep_name } | CrateFeature { dep_name, .. } => Some ( dep_name) ,
311
+ Dep { dep_name } | DepFeature { dep_name, .. } => Some ( dep_name) ,
312
312
_ => None ,
313
313
} )
314
314
. collect ( ) ;
@@ -318,7 +318,7 @@ fn build_feature_map(
318
318
{
319
319
bail ! (
320
320
"optional dependency `{}` is not included in any feature\n \
321
- Make sure that `crate :{}` is included in one of features in the [features] table.",
321
+ Make sure that `dep :{}` is included in one of features in the [features] table.",
322
322
dep. name_in_toml( ) ,
323
323
dep. name_in_toml( ) ,
324
324
) ;
@@ -332,15 +332,15 @@ fn build_feature_map(
332
332
pub enum FeatureValue {
333
333
/// A feature enabling another feature.
334
334
Feature ( InternedString ) ,
335
- /// A feature enabling a dependency with `crate :dep_name` syntax.
336
- Crate { dep_name : InternedString } ,
335
+ /// A feature enabling a dependency with `dep :dep_name` syntax.
336
+ Dep { dep_name : InternedString } ,
337
337
/// A feature enabling a feature on a dependency with `crate_name/feat_name` syntax.
338
- CrateFeature {
338
+ DepFeature {
339
339
dep_name : InternedString ,
340
340
dep_feature : InternedString ,
341
- /// If this is true, then the feature used the `crate :` prefix, which
341
+ /// If this is true, then the feature used the `dep :` prefix, which
342
342
/// prevents enabling the feature named `dep_name`.
343
- crate_prefix : bool ,
343
+ dep_prefix : bool ,
344
344
} ,
345
345
}
346
346
@@ -350,27 +350,32 @@ impl FeatureValue {
350
350
Some ( pos) => {
351
351
let ( dep, dep_feat) = feature. split_at ( pos) ;
352
352
let dep_feat = & dep_feat[ 1 ..] ;
353
- let ( dep, crate_prefix ) = if let Some ( dep) = dep. strip_prefix ( "crate :" ) {
353
+ let ( dep, dep_prefix ) = if let Some ( dep) = dep. strip_prefix ( "dep :" ) {
354
354
( dep, true )
355
355
} else {
356
356
( dep, false )
357
357
} ;
358
- FeatureValue :: CrateFeature {
358
+ FeatureValue :: DepFeature {
359
359
dep_name : InternedString :: new ( dep) ,
360
360
dep_feature : InternedString :: new ( dep_feat) ,
361
- crate_prefix,
361
+ dep_prefix,
362
+ }
363
+ }
364
+ None => {
365
+ if let Some ( dep_name) = feature. strip_prefix ( "dep:" ) {
366
+ FeatureValue :: Dep {
367
+ dep_name : InternedString :: new ( dep_name) ,
368
+ }
369
+ } else {
370
+ FeatureValue :: Feature ( feature)
362
371
}
363
372
}
364
- None if feature. starts_with ( "crate:" ) => FeatureValue :: Crate {
365
- dep_name : InternedString :: new ( & feature[ 6 ..] ) ,
366
- } ,
367
- None => FeatureValue :: Feature ( feature) ,
368
373
}
369
374
}
370
375
371
- /// Returns `true` if this feature explicitly used `crate :` syntax.
372
- pub fn has_crate_prefix ( & self ) -> bool {
373
- matches ! ( self , FeatureValue :: Crate { ..} | FeatureValue :: CrateFeature { crate_prefix : true , ..} )
376
+ /// Returns `true` if this feature explicitly used `dep :` syntax.
377
+ pub fn has_dep_prefix ( & self ) -> bool {
378
+ matches ! ( self , FeatureValue :: Dep { ..} | FeatureValue :: DepFeature { dep_prefix : true , ..} )
374
379
}
375
380
}
376
381
@@ -379,16 +384,16 @@ impl fmt::Display for FeatureValue {
379
384
use self :: FeatureValue :: * ;
380
385
match self {
381
386
Feature ( feat) => write ! ( f, "{}" , feat) ,
382
- Crate { dep_name } => write ! ( f, "crate :{}" , dep_name) ,
383
- CrateFeature {
387
+ Dep { dep_name } => write ! ( f, "dep :{}" , dep_name) ,
388
+ DepFeature {
384
389
dep_name,
385
390
dep_feature,
386
- crate_prefix : true ,
387
- } => write ! ( f, "crate :{}/{}" , dep_name, dep_feature) ,
388
- CrateFeature {
391
+ dep_prefix : true ,
392
+ } => write ! ( f, "dep :{}/{}" , dep_name, dep_feature) ,
393
+ DepFeature {
389
394
dep_name,
390
395
dep_feature,
391
- crate_prefix : false ,
396
+ dep_prefix : false ,
392
397
} => write ! ( f, "{}/{}" , dep_name, dep_feature) ,
393
398
}
394
399
}
0 commit comments