@@ -313,26 +313,15 @@ extension Workspace {
313
313
}
314
314
}
315
315
316
- // should calculate enabled traits here.
317
- let explicitlyEnabledTraits = dependency. traits? . filter {
318
- guard let condition = $0. condition else { return true }
319
- return condition. isSatisfied ( by: node. enabledTraits)
320
- } . map ( \. name)
316
+ let enabledTraitsSet = workspace. enabledTraitsMap [ dependency. identity]
321
317
322
318
return try manifestsMap [ dependency. identity] . map { manifest in
323
- // Calculate all transitively enabled traits for this manifest.
324
-
325
- var allEnabledTraits : Set < String > = [ " default " ]
326
- if let explicitlyEnabledTraits
327
- {
328
- allEnabledTraits = Set ( explicitlyEnabledTraits)
329
- }
330
319
331
320
return try GraphLoadingNode (
332
321
identity: dependency. identity,
333
322
manifest: manifest,
334
323
productFilter: dependency. productFilter,
335
- enabledTraits: allEnabledTraits
324
+ enabledTraits: enabledTraitsSet
336
325
)
337
326
}
338
327
}
@@ -566,10 +555,9 @@ extension Workspace {
566
555
return condition. isSatisfied ( by: parentEnabledTraits)
567
556
} ) . map ( \. name)
568
557
569
- let enabledTraitsSet = explicitlyEnabledTraits. flatMap ( { Set ( $0) } )
570
- let enabledTraits = enabledTraitsSet? . union ( self . enabledTraitsMap [ dep. identity] ) ?? self . enabledTraitsMap [ dep. identity]
571
-
572
- self . enabledTraitsMap [ dep. identity] = enabledTraits
558
+ if let enabledTraitsSet = explicitlyEnabledTraits. flatMap ( { Set ( $0) } ) {
559
+ self . enabledTraitsMap [ dep. identity] = enabledTraitsSet
560
+ }
573
561
574
562
let isDepUsed = try manifest. isPackageDependencyUsed ( dep, enabledTraits: parentEnabledTraits)
575
563
return isDepUsed
@@ -612,10 +600,9 @@ extension Workspace {
612
600
return condition. isSatisfied ( by: parentEnabledTraits)
613
601
} ) . map ( \. name)
614
602
615
- let enabledTraitsSet = explicitlyEnabledTraits. flatMap ( { Set ( $0) } )
616
- let enabledTraits = enabledTraitsSet? . union ( self . enabledTraitsMap [ dep. identity] ) ?? self . enabledTraitsMap [ dep. identity]
617
-
618
- self . enabledTraitsMap [ dep. identity] = enabledTraits
603
+ if let enabledTraitsSet = explicitlyEnabledTraits. flatMap ( { Set ( $0) } ) {
604
+ self . enabledTraitsMap [ dep. identity] = enabledTraitsSet
605
+ }
619
606
620
607
let isDepUsed = try manifest. isPackageDependencyUsed ( dep, enabledTraits: parentEnabledTraits)
621
608
return isDepUsed
@@ -657,27 +644,14 @@ extension Workspace {
657
644
return condition. isSatisfied ( by: node. item. enabledTraits)
658
645
} . map ( \. name)
659
646
660
- var enabledTraitsSet = explicitlyEnabledTraits. flatMap { Set ( $0) }
661
- let precomputedTraits = self . enabledTraitsMap [ dependency. identity]
662
- // Shouldn't union here if enabledTraitsMap returns "default" and we DO have explicitly enabled traits, since we're meant to flatten the default traits.
663
- if precomputedTraits == [ " default " ] ,
664
- let enabledTraitsSet {
665
- self . enabledTraitsMap [ dependency. identity] = enabledTraitsSet
666
- } else {
667
- // Unify traits
668
- enabledTraitsSet? . formUnion ( precomputedTraits)
669
- if let enabledTraitsSet {
670
- self . enabledTraitsMap [ dependency. identity] = enabledTraitsSet
671
- }
647
+ if let enabledTraitsSet = explicitlyEnabledTraits. flatMap ( { Set ( $0) } ) {
648
+ let calculatedTraits = try manifest. enabledTraits (
649
+ using: enabledTraitsSet,
650
+ . init( node. item. manifest)
651
+ )
652
+ self . enabledTraitsMap [ dependency. identity] = calculatedTraits
672
653
}
673
654
674
- let calculatedTraits = try manifest. enabledTraits (
675
- using: self . enabledTraitsMap [ dependency. identity] ,
676
- . init( node. item. manifest)
677
- )
678
-
679
- self . enabledTraitsMap [ dependency. identity] = calculatedTraits
680
-
681
655
// we also compare the location as this function may attempt to load
682
656
// dependencies that have the same identity but from a different location
683
657
// which is an error case we diagnose an report about in the GraphLoading part which
@@ -688,7 +662,7 @@ extension Workspace {
688
662
identity: dependency. identity,
689
663
manifest: manifest,
690
664
productFilter: dependency. productFilter,
691
- enabledTraits: calculatedTraits
665
+ enabledTraits: self . enabledTraitsMap [ dependency . identity ]
692
666
) ,
693
667
key: dependency. identity
694
668
) :
@@ -783,26 +757,14 @@ extension Workspace {
783
757
return condition. isSatisfied ( by: parentTraits)
784
758
} . map ( \. name)
785
759
786
- var enabledTraitsSet = explicitlyEnabledTraits. flatMap { Set ( $0) }
787
- let precomputedTraits = self . enabledTraitsMap [ dependency. identity]
788
- // Shouldn't union here if enabledTraitsMap returns "default" and we DO have explicitly enabled traits, since we're meant to flatten the default traits.
789
- if precomputedTraits == [ " default " ] ,
790
- let enabledTraitsSet {
791
- self . enabledTraitsMap [ dependency. identity] = enabledTraitsSet
792
- } else {
793
- // Unify traits
794
- enabledTraitsSet? . formUnion ( precomputedTraits)
795
- if let enabledTraitsSet {
796
- self . enabledTraitsMap [ dependency. identity] = enabledTraitsSet
797
- }
760
+ if let enabledTraitsSet = explicitlyEnabledTraits. flatMap ( { Set ( $0) } ) {
761
+ let calculatedTraits = try manifest. enabledTraits (
762
+ using: enabledTraitsSet,
763
+ . init( parent)
764
+ )
765
+ self . enabledTraitsMap [ dependency. identity] = calculatedTraits
798
766
}
799
767
800
- let calculatedTraits = try manifest. enabledTraits (
801
- using: self . enabledTraitsMap [ dependency. identity] ,
802
- . init( parent)
803
- )
804
-
805
- self . enabledTraitsMap [ dependency. identity] = calculatedTraits
806
768
let result = visited. insert ( dependency. identity)
807
769
if result. inserted {
808
770
try dependencies ( of: manifest, dependency. productFilter)
0 commit comments