@@ -180,7 +180,6 @@ fn process_pkg_features(
180
180
pkg_feature_var_map : & HashMap < InternedString , varisat:: Var > ,
181
181
pkg_dependencies : & [ Dependency ] ,
182
182
pkg_features : & FeatureMap ,
183
- check_dev_dependencies : bool ,
184
183
) {
185
184
let optional_dependencies = pkg_dependencies
186
185
. iter ( )
@@ -203,7 +202,7 @@ fn process_pkg_features(
203
202
FeatureValue :: Dep { dep_name } => {
204
203
// Add a clause for each dependency with the provided name (normal/build/dev with target)
205
204
for ( & ( dep_kind, _) , & dep_var) in & var_for_is_dependencies_used[ & dep_name] {
206
- if dep_kind == DepKind :: Development && !check_dev_dependencies {
205
+ if dep_kind == DepKind :: Development {
207
206
continue ;
208
207
}
209
208
solver. add_clause ( & [ pkg_feature_var. negative ( ) , dep_var. positive ( ) ] ) ;
@@ -227,7 +226,7 @@ fn process_pkg_features(
227
226
// Add clauses for each dependency with the provided name (normal/build/dev with target)
228
227
let dep_var_map = & var_for_is_dependencies_used[ & dep_name] ;
229
228
for ( & ( dep_kind, dep_platform) , & dep_var) in dep_var_map {
230
- if dep_kind == DepKind :: Development && !check_dev_dependencies {
229
+ if dep_kind == DepKind :: Development {
231
230
continue ;
232
231
}
233
232
@@ -274,36 +273,32 @@ fn process_compatible_dep_summaries(
274
273
}
275
274
276
275
let ( name, kind, platform) = ( dep. name_in_toml ( ) , dep. kind ( ) , dep. platform ( ) ) ;
277
- let dep_var_map = & var_for_is_dependencies_used[ & name] ;
278
- let dep_var = dep_var_map[ & ( kind, platform) ] ;
279
-
276
+ let dep_var = var_for_is_dependencies_used[ & name] [ & ( kind, platform) ] ;
280
277
let dep_feature_var_map = & var_for_is_dependencies_features_used[ & name] [ & ( kind, platform) ] ;
281
278
282
- let compatible_summaries = by_name
279
+ let compatible_pkg_ids = by_name
283
280
. get ( & dep. package_name ( ) )
284
281
. into_iter ( )
285
282
. flatten ( )
286
283
. filter ( |s| dep. matches ( s) )
287
284
. filter ( |s| dep. features ( ) . iter ( ) . all ( |f| s. features ( ) . contains_key ( f) ) )
288
- . cloned ( )
285
+ . map ( |s| s . package_id ( ) )
289
286
. collect :: < Vec < _ > > ( ) ;
290
287
291
288
// At least one compatible package should be activated
292
- let dep_clause = compatible_summaries
289
+ let dep_clause = compatible_pkg_ids
293
290
. iter ( )
294
- . map ( |s | var_for_is_packages_used[ & s . package_id ( ) ] . positive ( ) )
291
+ . map ( |id | var_for_is_packages_used[ & id ] . positive ( ) )
295
292
. chain ( [ dep_var. negative ( ) ] )
296
293
. collect :: < Vec < _ > > ( ) ;
297
294
298
295
solver. add_clause ( & dep_clause) ;
299
296
300
297
for ( & feature_name, & dep_feature_var) in dep_feature_var_map {
301
298
// At least one compatible package with the additional feature should be activated
302
- let dep_feature_clause = compatible_summaries
299
+ let dep_feature_clause = compatible_pkg_ids
303
300
. iter ( )
304
- . filter_map ( |s| {
305
- var_for_is_packages_features_used[ & s. package_id ( ) ] . get ( & feature_name)
306
- } )
301
+ . filter_map ( |id| var_for_is_packages_features_used[ & id] . get ( & feature_name) )
307
302
. map ( |var| var. positive ( ) )
308
303
. chain ( [ dep_feature_var. negative ( ) ] )
309
304
. collect :: < Vec < _ > > ( ) ;
@@ -315,10 +310,9 @@ fn process_compatible_dep_summaries(
315
310
// For the selected package for this dependency, the `"default"` feature should be activated if it exists
316
311
let mut dep_default_clause = vec ! [ dep_var. negative( ) ] ;
317
312
318
- for s in & compatible_summaries {
319
- let s_pkg_id = s. package_id ( ) ;
320
- let s_var = var_for_is_packages_used[ & s_pkg_id] ;
321
- let s_feature_var_map = & var_for_is_packages_features_used[ & s_pkg_id] ;
313
+ for & id in & compatible_pkg_ids {
314
+ let s_var = var_for_is_packages_used[ & id] ;
315
+ let s_feature_var_map = & var_for_is_packages_features_used[ & id] ;
322
316
323
317
if let Some ( s_default_feature_var) = s_feature_var_map. get ( & INTERNED_DEFAULT ) {
324
318
dep_default_clause
@@ -352,8 +346,6 @@ pub struct SatResolver {
352
346
353
347
impl SatResolver {
354
348
pub fn new < ' a > ( registry : impl IntoIterator < Item = & ' a Summary > ) -> Self {
355
- let check_dev_dependencies = false ;
356
-
357
349
let mut by_name: HashMap < InternedString , Vec < Summary > > = HashMap :: new ( ) ;
358
350
for pkg in registry {
359
351
by_name. entry ( pkg. name ( ) ) . or_default ( ) . push ( pkg. clone ( ) ) ;
@@ -427,7 +419,6 @@ impl SatResolver {
427
419
& var_for_is_packages_features_used[ & pkg_id] ,
428
420
pkg_dependencies,
429
421
pkg_features,
430
- check_dev_dependencies,
431
422
) ;
432
423
433
424
process_compatible_dep_summaries (
@@ -438,7 +429,7 @@ impl SatResolver {
438
429
& var_for_is_packages_features_used,
439
430
& by_name,
440
431
pkg_dependencies,
441
- check_dev_dependencies ,
432
+ false ,
442
433
) ;
443
434
}
444
435
0 commit comments