@@ -46,10 +46,14 @@ extension PackageGraph {
46
46
root. manifests. forEach {
47
47
manifestMap [ $0. key] = ( $0. value, fileSystem)
48
48
}
49
- let successors : ( GraphLoadingNode ) -> [ GraphLoadingNode ] = { node in
50
- node. requiredDependencies. compactMap { dependency in
51
- return manifestMap [ dependency. identity] . map { ( manifest, fileSystem) in
52
- GraphLoadingNode ( identity: dependency. identity, manifest: manifest, productFilter: dependency. productFilter, fileSystem: fileSystem)
49
+ func nodeSuccessorsProvider( node: GraphLoadingNode ) -> [ GraphLoadingNode ] {
50
+ node. requiredDependencies. compactMap { dependency in
51
+ manifestMap [ dependency. identity] . map { ( manifest, fileSystem) in
52
+ GraphLoadingNode (
53
+ identity: dependency. identity,
54
+ manifest: manifest,
55
+ productFilter: dependency. productFilter
56
+ )
53
57
}
54
58
}
55
59
}
@@ -59,11 +63,15 @@ extension PackageGraph {
59
63
manifestMap [ $0. identity] ? . manifest
60
64
} )
61
65
let rootManifestNodes = root. packages. map { identity, package in
62
- GraphLoadingNode ( identity: identity, manifest: package . manifest, productFilter: . everything, fileSystem : fileSystem )
66
+ GraphLoadingNode ( identity: identity, manifest: package . manifest, productFilter: . everything)
63
67
}
64
- let rootDependencyNodes = root. dependencies. lazy. compactMap { ( dependency: PackageDependency ) -> GraphLoadingNode ? in
68
+ let rootDependencyNodes = root. dependencies. lazy. compactMap { dependency in
65
69
manifestMap [ dependency. identity] . map {
66
- GraphLoadingNode ( identity: dependency. identity, manifest: $0. manifest, productFilter: dependency. productFilter, fileSystem: $0. fs)
70
+ GraphLoadingNode (
71
+ identity: dependency. identity,
72
+ manifest: $0. manifest,
73
+ productFilter: dependency. productFilter
74
+ )
67
75
}
68
76
}
69
77
let inputManifests = rootManifestNodes + rootDependencyNodes
@@ -72,13 +80,13 @@ extension PackageGraph {
72
80
var allNodes : [ GraphLoadingNode ]
73
81
74
82
// Detect cycles in manifest dependencies.
75
- if let cycle = findCycle ( inputManifests, successors: successors ) {
83
+ if let cycle = findCycle ( inputManifests, successors: nodeSuccessorsProvider ) {
76
84
observabilityScope. emit ( PackageGraphError . cycleDetected ( cycle) )
77
85
// Break the cycle so we can build a partial package graph.
78
86
allNodes = inputManifests. filter ( { $0. manifest != cycle. cycle [ 0 ] } )
79
87
} else {
80
- // Sort all manifests toplogically .
81
- allNodes = try topologicalSort ( inputManifests, successors: successors )
88
+ // Sort all manifests topologically .
89
+ allNodes = try topologicalSort ( inputManifests, successors: nodeSuccessorsProvider )
82
90
}
83
91
84
92
var flattenedManifests : [ PackageIdentity : GraphLoadingNode ] = [ : ]
@@ -87,8 +95,7 @@ extension PackageGraph {
87
95
let merged = GraphLoadingNode (
88
96
identity: node. identity,
89
97
manifest: node. manifest,
90
- productFilter: existing. productFilter. union ( node. productFilter) ,
91
- fileSystem: node. fileSystem
98
+ productFilter: existing. productFilter. union ( node. productFilter)
92
99
)
93
100
flattenedManifests [ node. identity] = merged
94
101
} else {
@@ -123,7 +130,7 @@ extension PackageGraph {
123
130
shouldCreateMultipleTestProducts: shouldCreateMultipleTestProducts,
124
131
testEntryPointPath: testEntryPointPath,
125
132
createREPLProduct: manifest. packageKind. isRoot ? createREPLProduct : false ,
126
- fileSystem: node . fileSystem,
133
+ fileSystem: fileSystem,
127
134
observabilityScope: nodeObservabilityScope
128
135
)
129
136
let package = try builder. construct ( )
0 commit comments